Главная страница
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.49 MB
Время: 0.028 c
15-1169649184
Vlad Oshin
2007-01-24 17:33
2007.02.18
web программирование на delphi..даже не знаю как называется это


2-1170052000
anonimousC++
2007-01-29 09:26
2007.02.18
Вопрос по си++, знаю что это форум по Делфи...


2-1170340182
донг
2007-02-01 17:29
2007.02.18
Отловить щелчок мыши.


2-1170335582
Kolan
2007-02-01 16:13
2007.02.18
ComboBox с цветными линиями вместо текста.


2-1170225188
КАРО
2007-01-31 09:33
2007.02.18
Вопрос по меню