Главная страница
    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.045 c
4-1183368356
AutoLoad
2007-07-02 13:25
2008.02.10
Автозапуск


15-1199385249
@!!ex
2008-01-03 21:34
2008.02.10
Легкий браузер...


1-1193959547
яблочго
2007-11-02 02:25
2008.02.10
Движение точки по окружности


2-1200244394
яблочго
2008-01-13 20:13
2008.02.10
сортировка массива записей


2-1200685401
MZP
2008-01-18 22:43
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский