преобразование регистра

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

преобразование регистра

Сообщение grigoreo »

вопросик по кодировке, пробую использовать функцию LowerCase а она английские хорошо так к нижнему регистру приводит , а вот с русскими буквами не получается, в чем может быть дело?
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Сообщение Logo »

Попробуйте:
AnsiLowerCase();
WideLowerCase();

Пожалуйста, указывайте версию Lazarus и среду в которой ведется работа, а то невозможно сориентироваться.
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

Logo писал(а):Попробуйте:
AnsiLowerCase();
WideLowerCase();

Пожалуйста, указывайте версию Lazarus и среду в которой ведется работа, а то невозможно сориентироваться.


Lazarus 0.9.27 FPC 2.2.5

если использую AnsiLowerCase() то для него больших руских букв не существует как были большие так и остаются
если WideLowerCase() то вместо руской буквы вопросик выходит
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Сообщение Logo »

Я так понял, что система Windows. В Linux оно работает без проблем, а в Windows, помойму нужно преобразовывать строку в UTF8:
Label1.Caption := Utf8ToAnsi(WideLowerCase(AnsiToUtf8(Edit1.Text)));
Кто работает с виндой, может точнее подскажут.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

В модуле LCLProc есть функции для работы с UTF-8

Код: Выделить всё

...
function UTF8Length(const s: string): integer;
function UTF8Pos(const SearchForText, SearchInText: string): integer;
function UTF8Copy(const s: string; StartCharIndex, CharCount: integer): string;
procedure UTF8Delete(var s: String; StartCharIndex, CharCount: integer);
procedure UTF8Insert(const source: String; var s: string; StartCharIndex: integer);
function UTF8LowerCase(const s: String): String;
function UTF8UpperCase(const s: String): String;   
...
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

Logo писал(а):Я так понял, что система Windows. В Linux оно работает без проблем, а в Windows, помойму нужно преобразовывать строку в UTF8:
Label1.Caption := Utf8ToAnsi(WideLowerCase(AnsiToUtf8(Edit1.Text)));
Кто работает с виндой, может точнее подскажут.


Да пока в Виндовсе, как вариант пойдет чет не подумал сам, но тады не будет универсальности поэтому нижний ответ более удачное решение

Mr.Smart писал(а):В модуле LCLProc есть функции для работы с UTF-8

Код: Выделить всё

...
function UTF8Length(const s: string): integer;
function UTF8Pos(const SearchForText, SearchInText: string): integer;
function UTF8Copy(const s: string; StartCharIndex, CharCount: integer): string;
procedure UTF8Delete(var s: String; StartCharIndex, CharCount: integer);
procedure UTF8Insert(const source: String; var s: string; StartCharIndex: integer);
function UTF8LowerCase(const s: String): String;
function UTF8UpperCase(const s: String): String;   
...



Спасибо всем кто помог в решение вопроса :)
Ответить