Главная страница
    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.037 c
2-1170381501
Riply
2007-02-02 04:58
2007.02.18
Многократное вхождение в критическую секцию.


2-1170018465
san1
2007-01-29 00:07
2007.02.18
real в integer


3-1164260869
ValexWeb
2006-11-23 08:47
2007.02.18
Как с помощью компоненты TABLE узнать номер текущей отображаемой


2-1170100189
Romeo12
2007-01-29 22:49
2007.02.18
помогите пожалуйста


2-1170264012
Шоломицкий С. А.
2007-01-31 20:20
2007.02.18
Объединение UPDATE





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский