Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.10;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
2-1200417720
сопляк
2008-01-15 20:22
2008.02.10
TToolBar - ошибка винды или VCL?


15-1199109936
ArtemESC
2007-12-31 17:05
2008.02.10
Чем можно прочистить водный камень в кране?


2-1200385986
asdf
2008-01-15 11:33
2008.02.10
DBGrid


15-1199903664
@!!ex
2008-01-09 21:34
2008.02.10
Какой БП нужен?


2-1200862323
batya-x
2008-01-20 23:52
2008.02.10
картинка на картинке