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

Вниз

Unicode   Найти похожие ветки 

 
Res   (2008-01-17 00:01) [0]

Здравствуйте! Подскажите как работать с Unicode в delphi. Какие компаненты использовать, функция кодирования из ansi в unicode и обратно.

Заранее благодарю.


 
iiymaxep   (2008-01-17 00:36) [1]

Классика

function ConvertAnsiToOem(const S: string): string;
{$IFNDEF WIN32}
var
 Source, Dest : array[0..255] of Char;
{$ENDIF}
begin
 {$IFDEF WIN32}
 SetLength(Result, Length(S));
 if Length(Result) > 0 then
   AnsiToOem(PChar(S), PChar(Result));
 {$ELSE}
 if Length(Result) > 0 then
 begin
   AnsiToOem(StrPCopy(Source, S), Dest);
   Result := StrPas(Dest);
 end;
 {$ENDIF}
end; { ConvertAnsiToOem }

function ConvertOemToAnsi(const S: string): string;
{$IFNDEF WIN32}
var
 Source, Dest : array[0..255] of Char;
{$ENDIF}
begin
 {$IFDEF WIN32}
 SetLength(Result, Length(S));
 if Length(Result) > 0 then
   OemToAnsi(PChar(S), PChar(Result));
 {$ELSE}
 if Length(Result) > 0 then
 begin
   OemToAnsi(StrPCopy(Source, S), Dest);
   Result := StrPas(Dest);
 end;
 {$ENDIF}
end; { ConvertOemToAnsi }


 
iiymaxep   (2008-01-17 00:40) [2]

Ах, сорри.... В уникод... Сча)


 
korneley ©   (2008-01-17 00:44) [3]


> iiymaxep   (17.01.08 00:36) [1]

А это разве не 866 <-> 1251 телодвижения? Однобайтные.


 
iiymaxep   (2008-01-17 00:46) [4]

Вот такой примерчик есть

{
Converts Unicode string to Ansi string using specified code page.
 @param   ws       Unicode string.
 @param   codePage Code page to be used in conversion.
 @returns Converted ansi string.
}

function WideStringToString(const ws: WideString; codePage: Word): AnsiString;
var
 l: integer;
begin
 if ws = "" then
   Result := ""
else
 begin
   l := WideCharToMultiByte(codePage,
     WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
     @ws[1], -1, nil, 0, nil, nil);
   SetLength(Result, l - 1);
   if l > 1 then
     WideCharToMultiByte(codePage,
       WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
       @ws[1], -1, @Result[1], l - 1, nil, nil);
 end;
end; { WideStringToString }

{:Converts Ansi string to Unicode string using specified code page.
 @param   s        Ansi string.
 @param   codePage Code page to be used in conversion.
 @returns Converted wide string.
}

function StringToWideString(const s: AnsiString; codePage: Word): WideString;
var
 l: integer;
begin
 if s = "" then
   Result := ""
else
 begin
   l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), -1, nil,
     0);
   SetLength(Result, l - 1);
   if l > 1 then
     MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]),
       -1, PWideChar(@Result[1]), l - 1);
 end;
end; { StringToWideString }


 
Плохиш ©   (2008-01-17 10:49) [5]


> Подскажите как работать с Unicode в delphi. Какие компаненты
> использовать

tnt


 
Res   (2008-01-17 13:04) [6]

function WideStringToString(const ws: WideString; codePage: Word): AnsiString;
непонятно, что за CodePage?


 
DVM ©   (2008-01-17 13:08) [7]


> Какие компаненты использовать, функция кодирования из ansi
> в unicode и обратно.

Считай, что уже никаких. Были TNT Unicode Controls бесплатные, теперь они платные. В будущих версиях Delphi может добавят все таки.


 
iiiymaxep ©   (2008-01-19 00:53) [8]

{ Code Page Default Values. }
CP_ACP                   = 0;             { default to ANSI code page }
CP_OEMCP                 = 1;             { default to OEM  code page }
CP_MACCP                 = 2;             { default to MAC  code page }
CP_THREAD_ACP            = 3;             { current thread"s ANSI code page }
CP_SYMBOL                = 42;            { SYMBOL translations }
CP_UTF7                  = 65000;         { UTF-7 translation }
CP_UTF8                  = 65001;         { UTF-8 translation }



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

Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.033 c
15-1198933079
Tirael
2007-12-29 15:57
2008.02.10
ктонить юзал БП со 120мм вентилятором?


2-1200661708
Alex_C
2008-01-18 16:08
2008.02.10
TColorDialog - убрать лишние цвета


2-1200396419
Lamer666
2008-01-15 14:26
2008.02.10
MessageDLG со своим Caption-ом и картинкой?


2-1200107272
дучф_ч
2008-01-12 06:07
2008.02.10
приложение без установки BDE


3-1190981424
Tonich
2007-09-28 16:10
2008.02.10
Коннект к базе несколькими приложениями одновременно





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