درصورتی که از دیتابیس فاکس پرو در داس استفاده کنید برای استفاده از ان در ویندوز کاراکتر ها به هم ریخته و ناخوانا میشوند .توابع زیر در دلفی این مشکل را حل میکنند
var i : integer ;
Str : string;
begin
Str := '' ;
for i := Length(StrRev) downto 1 do
Str := Str + Copy(StrRev,i,1) ;
Result := Str ;
end;
//------------------------------------------------------------------------------
procedure TFmImportInformation.SetStrDigit(var FlagDigit: Boolean; var Str, StrDigit: string);
var ch : string;
begin
ch := Copy(Str, Length(Trim(Str)), 1);
if Length(Trim(ch)) = 0 then
begin
if StrDigit <> '' then
Str := Str+ ' ' + StrRev(StrDigit) + ' ';
FlagDigit := False;
StrDigit := '';
Exit;
end;
if FlagDigit then
begin
if ( ch[1] in [' ','-','(',')'] ) then
Str := Str+ StrRev(StrDigit) + ' '
else
Str := Str+ ' ' + StrRev(StrDigit) + ' ';
end
else
Str := Str+ StrRev(StrDigit) ;
FlagDigit := False;
StrDigit := '';
end;
//------------------------------------------------------------------------------
function TFmImportInformation.Convert(tstr :string):Variant;
var
i,posi,len1:integer;
str2,str3,StrDigit,ch:string;
FlagDigit : Boolean;
begin
if tStr = '' then
begin
Result := '';
Exit;
end;
StrDigit := ''; FlagDigit := False;
len1 := length(winT);
tstr := Trim(tstr);
for i :=Length(tstr) downto 1 do
begin
str3 := copy(tstr,i,1);
if ( (str3=')') or (str3='(') or (str3='‹') ) then
begin
SetStrDigit( FlagDigit, str2, StrDigit );
//==Agar Character Ghabli Space ya '-' Nist ba Maghabl Space Ezafeh Shavad
//==KArbord -> Baray Shekastan matn Dar Gozareshat
ch := Copy(str2, Length(str2), 1);
if ch <> '' then
if ( not(ch[1] in [' ','-']) ) then
str2 := str2+' ';
//==
if str3=')' then
str2 := str2+'(';
if str3='(' then
begin
//==Ghabl Az '(' Space Nabashad
ch := Copy(str2, Length(str2), 1);
if ch = ' ' then
str2 := Copy(str2, 1, Length(str2)-1);
//==
str2 := str2+') ';
end;
if str3='‹' then
str2 := str2+'Ü';
end
else
begin
if str3='ò' then
begin
SetStrDigit(FlagDigit, str2, StrDigit);
str2 := str2+'áÇ';
end
else
begin
if ((str3<> ' ') and (str3<>'')) then
begin
posi := pos(str3,FoxSmall);
if posi<>0 then
begin
if ( (posi>=1) and (posi<=10) ) then
begin//Digit
FlagDigit := True;
StrDigit := StrDigit + winT[len1-posi+1] ;
end
else
begin//Horof Kochak
SetStrDigit(FlagDigit, str2, StrDigit);
str2 := str2+ winT[len1-posi+1] ;
end;
end
else
begin
posi := pos(str3,FoxLarge);
if posi<>0 then
begin//Horof Bozorg
SetStrDigit(FlagDigit, str2, StrDigit);
str2 := str2+winT[len1-posi+1] + ' ';
end
else
begin//Horof English
if ( str3[1] in ['!','@','#','$','%','^','&','*','/','\','+','='] ) or ( IsCharAlphaNumeric(str3[1]) ) then
begin
FlagDigit:= True;
StrDigit := StrDigit+ str3;
end
else
begin
str2 := str2+ StrRev(StrDigit) ;
if (FlagDigit) and (str3<>'/') and (str3<>'-') then
str2 := str2 + ' ';
str2 := str2+ str3;
StrDigit := '' ;
FlagDigit := False;
end;
end;
end;
end
else
begin
SetStrDigit(FlagDigit, str2, StrDigit);
end;
end;
end;
end;
SetStrDigit(FlagDigit, str2, StrDigit);
result := Trim(str2);
end;
//------------------------------------------------------------------------------
procedure TFmImportInformation.FormShow(Sender: TObject);
begin
winT :='áÇÈÖÕËÞÝÛÛÚÚååÎÍÌÔÓíáÊäãßÙØÒÑÐÏÆæŽÂíÇÇ0987654321';
FoxLarge := '‚ƒ„…†‡ˆ‰€ý¦ø¢£¤¥¯àïíôö–ñü§©œšž ùùâáæåé똫”’ò';
FoxSmall := '‚ƒ„…†‡ˆ‰€‘þ¦øŽ¢£¤¥¯àðîõ÷—óþ¨ª›Ÿ¡úûãäçèê왬®•“ò';
end;