Здравствуйте, misha_irpen, Вы писали:
_>А в чем проблема? По крайней мере для CP-1251 все примитивно:
Проблема именно в том, что там задавалась кодовая страница для перевода. Надо использовать WideCharToMultiByte и MultiByteToWideChar.
Можно попробовать следующий код:
function AnsiStringToWideStringCP(const AString: AnsiString; const CP: Cardinal): WideString;
var
Len: Integer;
begin
Len := MultiByteToWideChar(CP, 0, PChar(AString), Length(AString), nil, 0);
SetLength(Result, Len);
if Len > 0 then
begin
Len := MultiByteToWideChar(CP, 0, PChar(AString), Length(AString),
PWideChar(Result), Len);
if Len = 0 then Abort;
end;
end;
function WideStringToAnsiStringCP(const AWString: WideString; const CP: Cardinal): AnsiString;
var
Len: Integer;
lpUseDef: Boolean;
begin
lpUseDef := False;
Len := WideCharToMultiByte(CP, 0, PWideChar(AWString),
Length(AWString), nil, 0, nil, @lpUseDef);
Result := '';
SetLength(Result, Len);
if Len > 0 then
begin
Len := WideCharToMultiByte(CP, 0, PWideChar(AWString),
Length(AWString), PChar(Result), Len, nil, @lpUseDef);
if Len = 0 then Abort;
end;
end;
Надеюсь поможет.