Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

Иероглифы в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
1-1166872599
S_T_E_P_A_N___
2006-12-23 14:16
2007.02.18
Управление веб-сайтами из Delphi-программы


15-1170162022
Vlad Oshin
2007-01-30 16:00
2007.02.18
Что-то с helpом моим стало. То что задал поискать - не ищет...


2-1170329011
Garacio
2007-02-01 14:23
2007.02.18
адрес переменной в реестре


1-1167034804
Opilki_Inside
2006-12-25 11:20
2007.02.18
Отключить окно с CPU


2-1170270440
RedBanner
2007-01-31 22:07
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский