بازم سلام
این کد تکمیل شده کد بالاست.(dos to windows) مشکلش رو حل کردم ( هم اعداد و هم پرانتزها). حالشو ببرین
سرعتشم بد نیست. 1000 تا رکورد50 فیلدی رو توی 15 ثانیه جواب گرفتم.
برای استفاده از اون هم که می دونید: مثلا فیلدی با نام FAMIL
tablewinfamil.values:=tabdilef(tabledosfamil.value s)
Mahdi_S_T جان چشم. در اولین فرصت win to dos هم می زارمش.
function tabdilef(x:String):String;
var
matn1,mat2,mat3:String ;
i,j,k,_k2:integer;
begin
i:=-1;j:=0;k:=0;_k2:=0;matn1:='';mat2:='';mat3:='';
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]);
// ShowMessage(inttostr(j));
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);
// 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
37:matn1:=matn1+chr(37) ;//.
42:matn1:=matn1+chr(42) ;//%
45:matn1:=matn1+chr(45) ;//-
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;
// ShowMessage(matn1);
end;
//
///
mat2:='';mat3:='' ;
for i:= 0 to length(matn1) do
begin
// ShowMessage(matn[i]);
if not (matn1[i] in ['1','2','3','4','5','6','7','8','9','0','/','-','(',')']) then
begin
if Length(mat2)>0 then
begin
mat3:=mat3+' '+mat2+' '+matn1[i] ;
mat2:='';
end
else
mat3:=mat3+matn1[i] ;
end
else
begin
if matn1[i]='(' then matn1[i]:=')' else
if matn1[i]=')' then matn1[i]:='(';
mat2:=matn1[i]+mat2;
end;
end;
tabdilef:=trim(mat3+mat2);
end;