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

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

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

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

Сообщение grigoreo » 16.03.2009 18:34:43

вопросик по кодировке, пробую использовать функцию LowerCase а она английские хорошо так к нижнему регистру приводит , а вот с русскими буквами не получается, в чем может быть дело?
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

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

Сообщение Logo » 16.03.2009 18:53:34

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

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

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

Сообщение grigoreo » 16.03.2009 18:57:52

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

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


Lazarus 0.9.27 FPC 2.2.5

если использую AnsiLowerCase() то для него больших руских букв не существует как были большие так и остаются
если WideLowerCase() то вместо руской буквы вопросик выходит
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

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

Сообщение Logo » 16.03.2009 19:51:13

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

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

Сообщение Mr.Smart » 16.03.2009 20:52:15

В модуле 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;   
...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

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

Сообщение grigoreo » 17.03.2009 09:32:19

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;   
...



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


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34

Рейтинг@Mail.ru