با سلام خدمت همه دوستان عزیز
این تابع رو برای تبدیل بانکهای foxpro تحت dos به بانکهای تحت ویندوز نوشتم. تابع در مورد متنهای بدون عدد درست کار می کند ولی هنگامی که متن ما شامل کارکتر عددی هم هست مشکل داره یعنی مثلا اگر عبارت ما ' چک شماره 123 بانک ملی ' باشه متن تبدیلی به صورت ' چک شماره321 بانک ملی ' می دهد. اگه کسی تونست مشکل رو حل کنه ممنون می شم. ولی باز با این وجود همین تیکه هم کار منو خیلی راه انداخته امیدوارم به کار شما هم بیاد. ضمنا کد عکس این حالت رو هم نوشتم(از windows به dos که برای تامین اجتماعی و .. کاربرد داره) اگه مایل بودید بگید تقدیم کنم.
یا حق...
function tabdilef(x:String):String;
var
matn1:String ;
i,j,k,_k2:integer;
begin
i:=-1;j:=0;k:=0;_k2:=0;matn1:='';
while Length(x)>= i do
begin
i:=i+1;
j:=ord(x[Length(x)-i]);
k:=ord(x[Length(x)-i+1]);
_k2:=ord(x[Length(x)-i-1]);
case j of
141:matn1:=matn1+chr(194) ;
198:matn1:=matn1+chr(142) ;
143:matn1:=matn1+chr(193) ;//hamzeh
145,144: matn1:=matn1+chr(199);
146: if _k2<>255 then matn1:=matn1+chr(200)+chr(32)
else matn1:=matn1+chr(200);
147: matn1:=matn1+chr(200);
148:if _k2<>255 then matn1:=matn1+chr(129)+chr(32)
else matn1:=matn1+chr(129);
149: matn1:=matn1+chr(129);
150:if _k2<>255 then matn1:=matn1+chr(202)+chr(32)
else matn1:=matn1+chr(202);
151: matn1:=matn1+chr(202);//t
152:if _k2<>255 then matn1:=matn1+chr(203)+chr(32)
else matn1:=matn1+chr(203);
153: matn1:=matn1+chr(203);//sth
154:if _k2<>255 then matn1:=matn1+chr(204)+chr(32)
else matn1:=matn1+chr(204);
155: matn1:=matn1+chr(204);//gim
156:if _k2<>255 then matn1:=matn1+chr(141)+chr(32)
else matn1:=matn1+chr(141);
157: matn1:=matn1+chr(141);//ch
158:if _k2<>255 then matn1:=matn1+chr(205)+chr(32)
else matn1:=matn1+chr(205);
159: matn1:=matn1+chr(205);//h gimi
160:if _k2<>255 then matn1:=matn1+chr(206)+chr(32)
else matn1:=matn1+chr(206);
161: matn1:=matn1+chr(206);//kh
162: matn1:=matn1+chr(207);//d
163: matn1:=matn1+chr(208);//zth
164: matn1:=matn1+chr(209);//r
165: matn1:=matn1+chr(210);//z
166: matn1:=matn1+chr(142);//zgh
167:if _k2<>255 then matn1:=matn1+chr(211)+chr(32)
else matn1:=matn1+chr(211);
168: matn1:=matn1+chr(211);//sin
169:if _k2<>255 then matn1:=matn1+chr(212)+chr(32)
else matn1:=matn1+chr(212);
170: matn1:=matn1+chr(212);//shin
171:if _k2<>255 then matn1:=matn1+chr(213)+chr(32)
else matn1:=matn1+chr(213);
172: matn1:=matn1+chr(213);//sad
173:if _k2<>255 then matn1:=matn1+chr(214)+chr(32)
else matn1:=matn1+chr(214);
174: matn1:=matn1+chr(214);//zad
175:if (_k2=145) or (_k2=227) or (_k2=231) or (_k2=250) then matn1:=matn1+chr(216)
else matn1:=matn1+chr(216)+chr(32);//ta
224:if (_k2<>255) and (_k2<>145) then matn1:=matn1+chr(217)+chr(32)
else matn1:=matn1+chr(217);//za
225,226:if _k2<>255 then matn1:=matn1+chr(218)+chr(32)
else matn1:=matn1+chr(218);
227,228: matn1:=matn1+chr(218);//ain
229,230:if _k2<>255 then matn1:=matn1+chr(218)+chr(32)
else matn1:=matn1+chr(219);
231,232: matn1:=matn1+chr(219);//ghain
233:if _k2<>255 then matn1:=matn1+chr(221)+chr(32)
else matn1:=matn1+chr(221);
234: matn1:=matn1+chr(221);//f
235:if _k2<>255 then matn1:=matn1+chr(222)+chr(32)
else matn1:=matn1+chr(222);
236: matn1:=matn1+chr(222);//ghaf
237:if _k2<>255 then matn1:=matn1+chr(223)+chr(32)
else matn1:=matn1+chr(223);
238: matn1:=matn1+chr(223);//kaf
239:if _k2<>255 then matn1:=matn1+chr(144)+chr(32)
else matn1:=matn1+chr(144);
240: matn1:=matn1+chr(144);//ghaf
241:if _k2<>255 then matn1:=matn1+chr(225)+chr(32)
else matn1:=matn1+chr(225);
243: matn1:=matn1+chr(225);//lam
242: matn1:=matn1+chr(225)+chr(199);//la
244:if _k2<>255 then matn1:=matn1+chr(227)+chr(32)
else matn1:=matn1+chr(227);
245: matn1:=matn1+chr(227);//mim
246:if _k2<>255 then matn1:=matn1+chr(228)+chr(32)
else matn1:=matn1+chr(228);
247: matn1:=matn1+chr(228);//non
248: matn1:=matn1+chr(230);//vav
249:if _k2<>255 then matn1:=matn1+chr(229)+chr(32)
else matn1:=matn1+chr(229);
250,251: matn1:=matn1+chr(229);//h
252:matn1:=matn1+chr(237)+chr(32);
253:if _k2<>255 then matn1:=matn1+chr(237)+chr(32)
else matn1:=matn1+chr(237);
254: matn1:=matn1+chr(237);//non
128:matn1:=matn1+chr(48) ;//0
129:matn1:=matn1+chr(49) ;//1
130:matn1:=matn1+chr(50) ;//2
131:matn1:=matn1+chr(51) ;//3
132:matn1:=matn1+chr(52) ;//4
133:matn1:=matn1+chr(53) ;//5
134:matn1:=matn1+chr(54) ;//6
135:matn1:=matn1+chr(55) ;//7
136:matn1:=matn1+chr(56) ;//8
137:matn1:=matn1+chr(57) ;//9
46:matn1:=matn1+chr(46) ;//.
48:matn1:=matn1+chr(48) ;//0
49:matn1:=matn1+chr(49) ;//1
50:matn1:=matn1+chr(50) ;//2
51:matn1:=matn1+chr(51) ;//3
52:matn1:=matn1+chr(52) ;//4
53:matn1:=matn1+chr(53) ;//5
54:matn1:=matn1+chr(54) ;//6
55:matn1:=matn1+chr(55) ;//7
56:matn1:=matn1+chr(56) ;//8
57:matn1:=matn1+chr(57) ;//9
138:matn1:=matn1+chr(161) ;// ,
140:matn1:=matn1+chr(191) ;// ?
40:matn1:=matn1+chr(40) ;// (
41:matn1:=matn1+chr(41) ;// )
47:matn1:=matn1+chr(47) ;// /
255:matn1:=matn1+chr(32) ;// ' '
else
matn1:=matn1+'';
end;
end;
tabdilef:=matn1;
end;