Модератор: Модераторы
function dos2win(lpStr:String):string;
var
i,tekasci,newasci : Integer;
newstr : String;
begin
newstr:='';
for i:=1 to length(lpstr) do begin
tekasci:=ord(lpStr[i]);
if tekasci>127 then begin
if tekasci<176 then newasci:=tekasci + 64 else begin
case tekasci of
184: newasci:=241;
168: newasci:=240;
else newasci:=tekasci + 16;
end;
end;
end else begin
newasci:=tekasci;
end;
newstr:=newstr+chr(newasci);
end;
dos2win:=newstr;
end;
DBGrid.Font.CharSet:=OEM_CHARSET;
Vadim писал(а):Джентельмен
Значит Вы неправильно описали свою проблему. Если в парадоксовской таблице кодировка ср866 то у Вас должно быть так:
ANSI: Êðàìàòîðñê (или нечто подобное невообразимо тараканье)
OEM: Краматорск.
Но вот судя по этому у Вас перекодировка идёт в еще одну неправильную кодировку.
Вопрос: каким образом Вы определили, что в Ваших таблицах именно cp866?
function OemToAnsiStr(const OemStr: string): string;
begin
SetLength(Result, Length(OemStr));
if Length(Result) > 0 then
{$IFDEF WIN32}
OemToCharBuff(PChar(OemStr), PChar(Result), Length(Result));
{$ELSE}
// OemToAnsiBuff(@OemStr[1], @Result[1], Length(Result));
{$ENDIF}
end;
alexs писал(а):Джентельмен
Вот код из Rx
- Код: Выделить всё
function OemToAnsiStr(const OemStr: string): string;
begin
SetLength(Result, Length(OemStr));
if Length(Result) > 0 then
{$IFDEF WIN32}
OemToCharBuff(PChar(OemStr), PChar(Result), Length(Result));
{$ELSE}
// OemToAnsiBuff(@OemStr[1], @Result[1], Length(Result));
{$ENDIF}
end;
не забудь подключить windows
кстати, а каким образом получаете доступ к paradox таблицам?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 51