Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

Иероглифы в TMemo и TEdit   Найти похожие ветки 

 
w666w   (2007-01-28 13:24) [0]

Помогите разобраться как настроить мемо на поддержку уникода (чтобы иероглифы можно было вставлять и они нормально отображались)? Перебрать все кодировки в настройках шрифта и шрифт Arial Unicode MS выбирал. Ничего не помогает.

Заранее спасибо за помощь!


 
Плохиш ©   (2007-01-28 13:36) [1]

VCL не поддерживает юникод. Используй библиотеку TNT.


 
Anatoly Podgoretsky ©   (2007-01-28 13:44) [2]

Ни TMemo, ни TEdit не поддерживают Юникод.


 
_SuN_   (2007-01-28 21:05) [3]

//под юникод константы посмотри

function StringToPWide(sStr: string; var iNewSize: integer): PWideChar;
var pw    : PWideChar;
   iSize : integer;
begin
iSize:=Length(sStr)+1;
iNewSize:=iSize*2;
getmem(pw,iNewSize);
MultiByteToWideChar(CP_ACP,0,PChar(sStr),iSize,pw,iNewSize);
Result:=pw;
end;

function StrToUTF8(Value: String): String;
var buffer : pwidechar;
   BufLen : integer;
   lpBuf  : Pointer;
begin
BufLen:=Length(Value)*2+4;
GetMem(lpBuf,BufLen);
FillChar(lpBuf^,BufLen,0);
buffer:=StringToPWide(value,buflen);
WideCharToMultiByte(CP_UTF8,0,buffer,-1,lpBuf,BufLen,nil,nil);
FreeMem(buffer,BufLen);
Result:=PChar(lpBuf);
FreeMem(lpBuf,BufLen);
end;

function PWideToString(pw : PWideChar) : string;
var p    : PChar;
   iLen : integer;
begin
iLen := lstrlenw( pw ) + 1;
GetMem( p, iLen );
WideCharToMultiByte( CP_ACP, 0, pw, iLen, p, iLen * 2, nil, nil );
Result := p;
FreeMem( p, iLen );
end;

function UTF8ToStr(Value: String): String;
var buf : pwidechar;
   len : LongWord;
begin
len:=length(Value)+4;
GetMem(buf,len);
FillChar(buf^,len, 0);
MultiByteToWideChar(CP_UTF8,0,@Value[1],len-4,buf,len);
Result:=PWideToString(buf);
FreeMem(buf,len);
end;

function UTF8ToStrSmart(Value: String): String;
var Digit : String;
   i     : Word;
   HByte : Byte;
   Len   : Byte;
begin
Result:="";
Len:=0;
if (Value="")
   then Exit;
for i:=1 to length(Value)
    do begin
        if (Len>0)
           then begin
                 Digit:=Digit+Value[i];
                 Dec(Len);
                 if (Len=0)
                    then Result:=Result+UTF8ToStr(Digit);
                end
           else begin
                 HByte:=Ord(Value[i]);
                 if (HByte in [$00..$7f])
                     then Result:=Result+Value[i]
                     else begin
                           if ((HByte and $FC)=$FC)
                              then Len:=6
                              else if ((HByte and $F8)=$F8)
                                      then Len:=5
                                      else if ((HByte and $F0)=$F0)
                                               then Len := 4
                                               else if ((HByte and $E0)=$E0)
                                                       then Len := 3
                                                       else if ((HByte and $C0)=$C0)
                                                               then Len := 2
                                                               else begin
                                                                     Result:=Result+Value[i];
                                                                     Continue;
                                                                    end;
                          Dec(Len);
                          Digit:=Value[i];
                         end;
                end;
       end;
end;



Страницы: 1 вся ветка

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.047 c
2-1170236307
Piroxyline
2007-01-31 12:38
2007.02.18
Глюки с лэйблом


2-1170316509
Tornado
2007-02-01 10:55
2007.02.18
Отследить закрытие чужого приложения


2-1170397954
Lera
2007-02-02 09:32
2007.02.18
Запись в текстовый файл


2-1170394666
Chelovek
2007-02-02 08:37
2007.02.18
Предустановка свойств нового компанента......


1-1166811629
i-am-vladko
2006-12-22 21:20
2007.02.18
Изменение имени класса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский