PDA

View Full Version : کمک در تبدیل یک تابع به سی شارپ



sh
سه شنبه 04 فروردین 1388, 00:00 صبح
با سلام

یک تابع برای تبدیل کاراکترهای یه فونت خاص تحت داس به ویندوز در زبان دلفی موجود هست . یقینا" این تابع که توسط یکی از همکاران من نوشته شده بهینه نیست. از دوستانی که به زبان سی شارپ هم آشنائی دارند خواهشمندم تابع موجود را به سی شارپ تبدیل و در اینجا قرار بدهند



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:='';
if Length(x)>0 then begin
// start while
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
131:matn1:=matn1+chr(186) ;
132:matn1:=matn1+chr(191) ;
133:matn1:=matn1+chr(148) ;
134:matn1:=matn1+chr(194) ;
136:matn1:=matn1+chr(199)+chr(148) ;
137,139: matn1:=matn1+chr(199);
138:matn1:=matn1+chr(199) ;// ,
140:matn1:=matn1+chr(193) ;//hamzeh
141,143: matn1:=matn1+chr(195);
// 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
159:if _k2<>255 then matn1:=matn1+chr(205)+chr(32)
else matn1:=matn1+chr(205);
160: matn1:=matn1+chr(205);//h gimi
161:if _k2<>255 then matn1:=matn1+chr(206)+chr(32)
else matn1:=matn1+chr(206);
162: matn1:=matn1+chr(206);//kh
163: matn1:=matn1+chr(207);//d
164: matn1:=matn1+chr(208);//zth
165: matn1:=matn1+chr(209);//r
166: matn1:=matn1+chr(210);//z
167:matn1:=matn1+chr(142) ;//zgh
//167: matn1:=matn1+chr(142);
168:if _k2<>255 then matn1:=matn1+chr(211)+chr(32)
else matn1:=matn1+chr(211);
169: matn1:=matn1+chr(211);//sin
170:if _k2<>255 then matn1:=matn1+chr(212)+chr(32)
else matn1:=matn1+chr(212);
171: matn1:=matn1+chr(212);//shin
172:if _k2<>255 then matn1:=matn1+chr(213)+chr(32)
else matn1:=matn1+chr(213);
173: matn1:=matn1+chr(213);//sad
181:if _k2<>255 then matn1:=matn1+chr(214)+chr(32)
else matn1:=matn1+chr(214);
182: matn1:=matn1+chr(214);//zad
183: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
184: matn1:=matn1+chr(216);
190:if (_k2<>255) and (_k2<>145) then matn1:=matn1+chr(217)+chr(32)
else matn1:=matn1+chr(217);//za
198: matn1:=matn1+chr(217);
199,208:if _k2<>255 then matn1:=matn1+chr(218)+chr(32)
else matn1:=matn1+chr(218);
209,210: matn1:=matn1+chr(218);//ain
211,212:if _k2<>255 then matn1:=matn1+chr(219)+chr(32)
else matn1:=matn1+chr(219);
213,214: matn1:=matn1+chr(219);//ghain
215:if _k2<>255 then matn1:=matn1+chr(221)+chr(32)
else matn1:=matn1+chr(221);
216: matn1:=matn1+chr(221);//f
221:if _k2<>255 then matn1:=matn1+chr(222)+chr(32)
else matn1:=matn1+chr(222);
222: matn1:=matn1+chr(222);//ghaf
224:if _k2<>255 then matn1:=matn1+chr(152)+chr(32)
else matn1:=matn1+chr(152);
225: matn1:=matn1+chr(152);//kaf
226:if _k2<>255 then matn1:=matn1+chr(144)+chr(32)
else matn1:=matn1+chr(144);
227: matn1:=matn1+chr(144);//ghaf
228:if _k2<>255 then matn1:=matn1+chr(225)+chr(32)
else matn1:=matn1+chr(225);
229: matn1:=matn1+chr(225);//lam
//242: matn1:=matn1+chr(225)+chr(199);//la
230:if _k2<>255 then matn1:=matn1+chr(227)+chr(32)
else matn1:=matn1+chr(227);
231: matn1:=matn1+chr(227);//mim
232:if _k2<>255 then matn1:=matn1+chr(228)+chr(32)
else matn1:=matn1+chr(228);
233: matn1:=matn1+chr(228);//non
234: matn1:=matn1+chr(230);//vav
235:if _k2<>255 then matn1:=matn1+chr(229)+chr(32)
else matn1:=matn1+chr(229);
236: matn1:=matn1+chr(229);
237: matn1:=matn1+chr(229);
239: matn1:=matn1+chr(237)+chr(32);
//134,135: matn1:=matn1+chr(229);//h
241:matn1:=matn1+chr(237)+chr(32);
//137:if _k2<>255 then matn1:=matn1+chr(237)+chr(32)
//else matn1:=matn1+chr(237);
//254: matn1:=matn1+chr(237);//non
242:matn1:=matn1+chr(237);
244:matn1:=matn1+chr(48) ;//0
245:matn1:=matn1+chr(49) ;//1
246:matn1:=matn1+chr(50) ;//2
247:matn1:=matn1+chr(51) ;//3
248:matn1:=matn1+chr(52) ;//4
249:matn1:=matn1+chr(53) ;//5
250:matn1:=matn1+chr(54) ;//6
251:matn1:=matn1+chr(55) ;//7
252:matn1:=matn1+chr(56) ;//8
253: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

//140:matn1:=matn1+chr(191) ;// ?
40:matn1:=matn1+chr(40) ;// (
41:matn1:=matn1+chr(41) ;// )
47:matn1:=matn1+chr(47) ;// /
255:matn1:=matn1+chr(255) ;// ' '
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;
// End while
end;
tabdilef:=trim(mat3+mat2);
end;