# Native Code > برنامه نویسی در Delphi > مباحث عمومی دلفی و پاسکال >  تابعی برای تبدیل بانکها از dos به windows

## ehsan2000

با سلام خدمت همه  دوستان عزیز  
    این تابع رو برای تبدیل بانکهای 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;

----------


## Developer Programmer

می بخشید که مزاحم میشم.
به منظور خوانایی کدتان؛ لطفا انرا بین تگ های Code قرار دهید
ممنون

----------


## ehsan2000

آی به چشم  :چشمک:

----------


## MM_Mofidi

این کد را از روی کد آقای کیا در foxpro به vb تبدیل کردم به نظم کامل است.خیلی کامل ولی یکم کند به نظر میرسد.برای حجم داده زیاد

----------


## FatemehB

سلام
میشه بگید جه جوری ازش استفاده میشه کرد ؟

ممنون

----------


## Mahdi_S_T

آقا احسان لطف کن این تابع ویندوز به داس  رو هم بزار تا استفاده کنیم . آیا سرعت اون خوبه

----------


## ehsan2000

بازم سلام

این کد تکمیل شده کد بالاست.(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;

----------


## Mahdi_S_T

احسان عزیز من اون تابع اولی که قبلا گذاشتی رو تست کردم ولی در خروجی هیچ رشته ای رو نشان نمی داد و البته خطایی هم نمی داد .

حالا این یکی رو تست کنم ببینم چی میشه ؟

----------


## Mahdi_S_T

آقا احسان این تابع جدیده وقتی اجرا کردم خطا داد . اگه امکان داره یه مثال آپلود کن . ممنون

----------


## Bahmany

سلام علیکم

میخواستم بدونم که آیا کدهای فوق برای کلمات فارسی نیز صدق می کنند

----------


## ehsan2000

اینم کد مربوط به تبدیل از windows  به dos :چشمک:  

function tabdilfe(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;
    if (ord(x[Length(x)-i])>= 48)  and (ord(x[Length(x)-i])<= 57) then
    j:=ord(x[i+1])
    else 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
        194:matn1:=matn1+chr(141) ;
        198:matn1:=matn1+chr(142) ;
        193:matn1:=matn1+chr(143) ;//hamzeh
        199: if (  (i= Length(x)-1)  or  (_k2=32) or (_k2=199) or (_k2=207)  or (_k2=208)  or (_k2=209)  or (_k2=210)  or (_k2=142)  or (_k2=230) )  then
               matn1:=matn1+chr(144)
             else    matn1:=matn1+chr(145);

        200:if (i=0) or (k=32) then  matn1:=matn1+chr(146)
                               else matn1:=matn1+chr(147);//b

        129:if (i=0) or (k=32) then  matn1:=matn1+chr(148)
                               else matn1:=matn1+chr(149);//p

        202:if (i=0) or (k=32) then  matn1:=matn1+chr(150)
                               else matn1:=matn1+chr(151);//t

        203:if (i=0) or (k=32) then  matn1:=matn1+chr(152)
                               else matn1:=matn1+chr(153);//3

        204:if (i=0) or (k=32) then  matn1:=matn1+chr(154)
                               else matn1:=matn1+chr(155);//gim

        141:if (i=0) or (k=32) then  matn1:=matn1+chr(156)
                               else matn1:=matn1+chr(157);//ch

        205:if (i=0) or (k=32) then  matn1:=matn1+chr(158)
                               else matn1:=matn1+chr(159);//h jimi

        206:if (i=0) or (k=32) then  matn1:=matn1+chr(160)
                               else matn1:=matn1+chr(161);//kh
        207:matn1:=matn1+chr(162) ;//d
        208:matn1:=matn1+chr(163) ;//the
        209:matn1:=matn1+chr(164) ;//r
        210:matn1:=matn1+chr(165) ;//z
        142:matn1:=matn1+chr(166) ;//zh

        211:if (i=0) or (k=32) then  matn1:=matn1+chr(167)
                               else matn1:=matn1+chr(168);//sin

        212:if (i=0) or (k=32) then  matn1:=matn1+chr(169)
                               else matn1:=matn1+chr(170);//shin

        213:if (i=0) or (k=32) then  matn1:=matn1+chr(171)
                               else matn1:=matn1+chr(172);//sad

        214:if (i=0) or (k=32) then  matn1:=matn1+chr(173)
                               else matn1:=matn1+chr(174);//zad

        216:matn1:=matn1+chr(175) ;//ta
        217:matn1:=matn1+chr(224) ;//za

        218:if ((i=0) or (k=32)) and ( (_k2=32) or (_k2=199) or (_k2=207)  or (_k2=208)  or (_k2=209)  or (_k2=210)  or (_k2=142)  or (_k2=230) ) then
             matn1:=matn1+chr(225)
             else
               begin
                 if (i=0) and ( (_k2<>32) or (_k2<>199) or (_k2<>207)  or (_k2<>208)  or (_k2<>209)  or (_k2<>210)  or (_k2<>142)  or (_k2<>230))  then
                   matn1:=matn1+chr(226);
                 if  (  (i<>0) and  ( i<>Length(x)-1 )  )  and ( (k=32) or (_k2=32) or (_k2=199) or (_k2=207)  or (_k2=208)  or (_k2=209)  or (_k2=210)  or (_k2=142)  or (_k2=230) )  then
                     matn1:=matn1+chr(228)
                   else
                     begin
                        if   i=Length(x)-1  then   matn1:=matn1+chr(228);
                        if ( (i<>0) and (i<> length(x)-1)) and ( (k<>32) or (_k2<>32) or (_k2<>199) or (_k2<>207)  or (_k2<>208)  or (_k2<>209)  or (_k2<>210)  or (_k2<>142)  or (_k2<>230) ) then
                          matn1:=matn1+chr(227);
                     end;
                end;//ain

        219:if ((i=0) or (k=32)) and ( (_k2=32) or (_k2=199) or (_k2=207)  or (_k2=208)  or (_k2=209)  or (_k2=210)  or (_k2=142)  or (_k2=230) ) then
             matn1:=matn1+chr(229)
             else
               begin
                 if (i=0) and ( (_k2<>32) or (_k2<>199) or (_k2<>207)  or (_k2<>208)  or (_k2<>209)  or (_k2<>210)  or (_k2<>142)  or (_k2<>230))  then
                   matn1:=matn1+chr(230);
                 if  (  (i<>0) and  ( i<>Length(x)-1 )  )  and ( (k=32) or (_k2=32) or (_k2=199) or (_k2=207)  or (_k2=208)  or (_k2=209)  or (_k2=210)  or (_k2=142)  or (_k2=230) )  then
                     matn1:=matn1+chr(232)
                   else
                     begin
                        if   i=Length(x)-1  then   matn1:=matn1+chr(232);
                        if ( (i<>0) and (i<> length(x)-1)) and ( (k<>32) or (_k2<>32) or (_k2<>199) or (_k2<>207)  or (_k2<>208)  or (_k2<>209)  or (_k2<>210)  or (_k2<>142)  or (_k2<>230) ) then
                          matn1:=matn1+chr(231);
                     end;
                end; ////ghain


        221:if (i=0) or (k=32) then  matn1:=matn1+chr(233)
                               else matn1:=matn1+chr(234);//f

        222:if (i=0) or (k=32) then  matn1:=matn1+chr(235)
                               else matn1:=matn1+chr(236);//ghaf

        223:if (i=0) or (k=32) then  matn1:=matn1+chr(237)
                               else matn1:=matn1+chr(238);//kaf

        144:if (i=0) or (k=32) then  matn1:=matn1+chr(239)
                               else matn1:=matn1+chr(240);//gaf

        225:if (i=0) or (k=32) then  matn1:=matn1+chr(241)
                               else matn1:=matn1+chr(243);//lam

        227:if (i=0) or (k=32) then  matn1:=matn1+chr(244)
                               else matn1:=matn1+chr(245);//mim

        228:if (i=0) or (k=32) then  matn1:=matn1+chr(246)
                     else  matn1:=matn1+chr(247);//non

        230:matn1:=matn1+chr(248) ;//vav

        229:if (i=0) or (k=32) then  matn1:=matn1+chr(249)
                     else  matn1:=matn1+chr(251);//h_do

        237:if (i=0) or (k=32) then  matn1:=matn1+chr(252)
                     else  matn1:=matn1+chr(254);//ye

        48:matn1:=matn1+chr(128) ;//0
        49:matn1:=matn1+chr(129) ;//1
        50:matn1:=matn1+chr(130) ;//2
        51:matn1:=matn1+chr(131) ;//3
        52:matn1:=matn1+chr(132) ;//4
        53:matn1:=matn1+chr(133) ;//5
        54:matn1:=matn1+chr(134) ;//6
        55:matn1:=matn1+chr(135) ;//7
        56:matn1:=matn1+chr(136) ;//8
        57:matn1:=matn1+chr(137) ;//9
        161:matn1:=matn1+chr(138) ;// ,
        191:matn1:=matn1+chr(140) ;// ?
        40:matn1:=matn1+chr(40) ;// (
        41:matn1:=matn1+chr(41) ;// )
        47:matn1:=matn1+chr(47) ;// /
        32:matn1:=matn1+chr(255) ;// ' '
       else
       matn1:=matn1+'';
      end;
   end;

   tabdilfe:=matn1;
end;

----------


## ehsan2000

اینم یه مثال 
احتمالا فیلد خالی بهش دادیدکه خطا گرفته.

 Bahmany عزیز سوالتون رو متوجه نشدم.

----------


## Mahdi_S_T

واقعا عالی بود خیلی ممنون - در ضمن کدپیچ این چیه ؟ ایران سیستم یا سایه ؟

من یه بانک تحت داس دارم که وقتی میخوام تبدیل کنم خطا میده . بانک رو برات میل می کنم یه نگاه بهش بکن .

لطفا ایمیلتو برام بذار

----------


## ehsan2000

خواهش می کنم. :خجالت:  
 کد پیج ایران سیستمه. البته اگه وقت کنم روی سایه هم کار می کنم.
امیدوارم مفید واقع شده باشه.
en.jalilian2000@gmail.com

----------


## Mahdi_S_T

احسان جان این توابع خیلی کارم رو راه انداخت .
هنوز این دو تابع رو برای سایه آماده نکردی ؟
در ضمن اون بانکی که گفتم درست نشون نمیده به علت خرابی خود بانک بود !
منتظرم ....

----------


## شفیعی

سلام 
اینهم تابعی که من نوشته ام البته من برای کارم یک DLL ساختم 

library DOSWIN;

uses
  SysUtils,
  Classes;

{$R *.res}

function FDOSWIN(FDW : STRING):PCHAR; STDCALL;
VAR FD:STRING;
    T,T1:INTEGER;
    SS:CHAR;
BEGIN
FD:=FDW;
FDW:='';
IF TRIM(FD) <> '' THEN
for t:=0 to length(FD) do
begin
ss:=FD[t];
T1:=Ord(SS);
case T1 of
1..127:
        FDW:=FDW+SS;
128: FDW:=FDW+CHR(48);
129: FDW:=FDW+CHR(49);
130: FDW:=FDW+CHR(50);
131: FDW:=FDW+CHR(51);
132: FDW:=FDW+CHR(52);
133: FDW:=FDW+CHR(53);
134: FDW:=FDW+CHR(54);
135: FDW:=FDW+CHR(55);
136: FDW:=FDW+CHR(56);
137: FDW:=FDW+CHR(57);

138: FDW:=CHR(161)+FDW;
139: FDW:=CHR(220)+FDW;
140: FDW:=CHR(191)+FDW;
141: FDW:=CHR(194)+FDW;
142: FDW:=CHR(198)+FDW;
143: FDW:=CHR(193)+FDW;
144: FDW:=CHR(199)+FDW;
145: FDW:=CHR(199)+FDW;
146: FDW:=CHR(200)+CHR(157)+FDW;
147: FDW:=CHR(200)+FDW;
148: FDW:=CHR(129)+CHR(157)+FDW;
149: FDW:=CHR(129)+FDW;
150: FDW:=CHR(202)+CHR(157)+FDW;
151: FDW:=CHR(202)+FDW;
152: FDW:=CHR(203)+CHR(157)+FDW;
153: FDW:=CHR(203)+FDW;
154: FDW:=CHR(204)+CHR(157)+FDW;
155: FDW:=CHR(204)+FDW;
156: FDW:=CHR(141)+CHR(157)+FDW;
157: FDW:=CHR(141)+FDW;
158: FDW:=CHR(205)+CHR(157)+FDW;
159: FDW:=CHR(205)+FDW;
160: FDW:=CHR(206)+CHR(157)+FDW;
161: FDW:=CHR(206)+FDW;
162: FDW:=CHR(207)+FDW;
163: FDW:=CHR(208)+FDW;
164: FDW:=CHR(209)+FDW;
165: FDW:=CHR(210)+FDW;
166: FDW:=CHR(142)+FDW;
167: FDW:=CHR(211)+CHR(157)+FDW;
168: FDW:=CHR(211)+FDW;
169: FDW:=CHR(212)+CHR(157)+FDW;
170: FDW:=CHR(212)+FDW;
171: FDW:=CHR(213)+CHR(157)+FDW;
172: FDW:=CHR(213)+FDW;
173: FDW:=CHR(214)+CHR(157)+FDW;
174: FDW:=CHR(214)+FDW;
175: FDW:=CHR(216)+CHR(157)+FDW;
176..223 : FDW:=CHR(35)+FDW;
224: FDW:=CHR(217)+CHR(157)+FDW;
225: FDW:=CHR(218)+CHR(157)+FDW;
226: FDW:=CHR(218)+CHR(157)+FDW;
227: FDW:=CHR(218)+FDW;
228: FDW:=CHR(218)+FDW;
229: FDW:=CHR(219)+CHR(157)+FDW;
230: FDW:=CHR(219)+CHR(157)+FDW;
231: FDW:=CHR(219)+FDW;
232: FDW:=CHR(219)+FDW;
233: FDW:=CHR(221)+CHR(157)+FDW;
234: FDW:=CHR(221)+FDW;
235: FDW:=CHR(222)+CHR(157)+FDW;
236: FDW:=CHR(222)+FDW;
237: FDW:=CHR(223)+CHR(157)+FDW;
238: FDW:=CHR(223)+FDW;
239: FDW:=CHR(144)+CHR(157)+FDW;
240: FDW:=CHR(144)+FDW;
241: FDW:=CHR(225)+CHR(157)+FDW;
242: FDW:=CHR(225)+CHR(199)+FDW;
243: FDW:=CHR(225)+FDW;
244: FDW:=CHR(227)+CHR(157)+FDW;
245: FDW:=CHR(227)+FDW;
246: FDW:=CHR(228)+CHR(157)+FDW;
247: FDW:=CHR(228)+FDW;
248: FDW:=CHR(230)+FDW;
249: FDW:=CHR(229)+CHR(157)+FDW;
250: FDW:=CHR(229)+FDW;
251: FDW:=CHR(229)+FDW;
252: FDW:=CHR(237)+CHR(157)+FDW;
253: FDW:=CHR(237)+CHR(157)+FDW;
254: FDW:=CHR(237)+FDW;
255: FDW:=CHR(255)+FDW;
 end;
 end;
FDOSWIN:=PCHAR(FDW);
END;

exports
FDOSWIN;

begin
end.

----------


## Mahdi_S_T

آقای شفیعی این برای سایه است یا ایران سیستم ؟

----------


## mathflood

ضمن تشکر از دوستی که کد مبدل این کدپیج عهد دقیانوس را نوشته، من برای نیاز خودم کد را در PHP بازنویسی کردم، گفتم شاید به درد دیگران هم بخورد، لازم به ذکر است که این کد با رشته های ترکیبی انگلیسی و فارسی مشکلی ندارد.

مهرداد


function irsys2ar($x)
{
	$i=-1;$j=0;$k=0;$_k2=0;$matn1='';$mat2='';$mat3='';
	while (strlen($x)>= $i) 
	{
    $i=$i+1;
    $j=ord($x{strlen($x)-$i});

     $k=ord($x{strlen($x)-$i+1});
    $_k2=ord($x{strlen($x)-$i-1});


    // ShowMessage(inttostr($j));
      switch($j)
		{
        case 141:$matn1.=chr(194) ; break;
        case 198:$matn1.=chr(142) ; break;
        case 143:$matn1.=chr(193) ;//hamzeh 
		break;
        case 145:
		case 144:  $matn1.=chr(199); break;

      // 144: $matn1.=chr(199);

        case 146: 
			if ($_k2!=255)
				$matn1.=chr(200).chr(32);
            else 
				$matn1.=chr(200);
			break;

        case 147: $matn1.=chr(200); break;
        case 148:
			if ($_k2!=255)
				$matn1.=chr(129).chr(32);
             else 
				 $matn1.=chr(129);
			  break;
        case 149: $matn1.=chr(129); break;

        case 150:
			if ($_k2!=255)
				$matn1.=chr(202).chr(32) ;
             else 
				 $matn1.=chr(202);
			 break;
        case 151: 
			$matn1.=chr(202);//t 
		break;

        case 152:
			if ($_k2!=255)
				$matn1.=chr(203).chr(32) ;
             else 
				 $matn1.=chr(203);
			 break;
        case 153: $matn1.=chr(203);//sth 
		break;

        case 154:
			if ($_k2!=255)  
				$matn1.=chr(204).chr(32);
             else 
				 $matn1.=chr(204);
		break;
        case 155: $matn1.=chr(204);//gim 
		break;

        case 156:
			if ($_k2!=255)
				$matn1.=chr(141).chr(32);
             else 
				 $matn1.=chr(141);
 		break;
        case 157: $matn1.=chr(141);//ch
		break;

        case 158:
			if ($_k2!=255)
				$matn1.=chr(205).chr(32);
             else 
				 $matn1.=chr(205);
			  break;
        case 159:
			$matn1.=chr(205);//h gimi 
		break;

        case 160:
			if ($_k2!=255)
				$matn1.=chr(206).chr(32);
             else 
				 $matn1.=chr(206);
		 break;
        case 161: $matn1.=chr(206);//kh 
		break;

        case 162: $matn1.=chr(207);//d 
		break;
        case 163: $matn1.=chr(208);//zth 
		break;
        case 164: $matn1.=chr(209);//r 
		break;
        case 165: $matn1.=chr(210);//z 
		break;
        case 166: $matn1.=chr(142);//zgh 
		break;
        case 167:
			if ($_k2!=255)
				$matn1.=chr(211).chr(32);
		     else 
				$matn1.=chr(211);
		break;
        case 168: $matn1.=chr(211);//sin 
		break;
        case 169:
			if ($_k2!=255)
				$matn1.=chr(212).chr(32);
             else 
				 $matn1.=chr(212);
			  break;
        case 170: $matn1.=chr(212);//shin 
		break;

        case 171:
			if ($_k2!=255) 
				$matn1.=chr(213).chr(32);
             else 
				 $matn1.=chr(213);
		break;

        case 172: $matn1.=chr(213);//sad 
		break;

        case 173:
			if ($_k2!=255)  
				$matn1.=chr(214).chr(32);
             else 
				 $matn1.=chr(214);
		break;
        case 174: $matn1.=chr(214);//zad 
		break;

        case 175:
			if  (($_k2=145) || ($_k2=227) || ($_k2=231) || ($_k2=250))
				$matn1.=chr(216);
             else
				$matn1.=chr(216).chr(32);//ta
		break;
		case 224:
			if (($_k2!=255) && ($_k2!=145))
				$matn1.=chr(217).chr(32);
             else 
				 $matn1.=chr(217);//za

		break;
        case 225:
		case 226:
			if ($_k2!=255)
				$matn1.=chr(218).chr(32);
             else 
				 $matn1.=chr(218);
		break;
        case 227:
		case 228:
			$matn1.=chr(218);//ain 
		break;

        case 229:
		case 230:
			if ($_k2!=255)
				$matn1.=chr(218).chr(32);
             else 
				 $matn1.=chr(219);
		break;
        case 231:
		case 232: 
			$matn1.=chr(219);//ghain 
		break;

        case 233:
			if ($_k2!=255)
				$matn1.=chr(221).chr(32);
             else 
				 $matn1.=chr(221);
		break;
        case 234: 
			$matn1.=chr(221);//f 
		break;

        case 235:
			if ($_k2!=255)  
				$matn1.=chr(222).chr(32);
             else 
				 $matn1.=chr(222);
		break;
        case 236:
			$matn1.=chr(222);//ghaf 
		break;

        case 237:
			if ($_k2!=255)
				$matn1.=chr(223).chr(32);
             else 
				 $matn1.=chr(223);
		break;
        case 238: $matn1.=chr(223);//kaf
		break;

        case 239:
			if ($_k2!=255)
				$matn1.=chr(144).chr(32);
             else 
				 $matn1.=chr(144);
		break;
        case 240: $matn1.=chr(144);//ghaf 
		break;

        case 241:
			if ($_k2!=255)
				$matn1.=chr(225).chr(32);
             else 
				 $matn1.=chr(225);
		break;
        case 243: 
			$matn1.=chr(225);//lam 
		break;

        case 242: 
			$matn1.=chr(225).chr(199);//la 
		break;
        case 244:
			if ($_k2!=255)
				$matn1.=chr(227).chr(32);
             else 
				 $matn1.=chr(227);
		break;
        case 245: 
			$matn1.=chr(227);//mim 
		break;

        case 246:
			if ($_k2!=255)
				$matn1.=chr(228).chr(32);
             else 
				 $matn1.=chr(228);
		break;
        case 247: $matn1.=chr(228);//non 
		break;

        case 248: $matn1.=chr(230);//vav 
		break;

        case 249:
			if ($_k2!=255)
				$matn1.=chr(229).chr(32);
             else 
				 $matn1.=chr(229);

		break;
        case 250:
		case 251: $matn1.=chr(229);//h 
		break;

        case 252:$matn1.=chr(237).chr(32); break;
        case 253:
			if ($_k2!=255)
				$matn1.=chr(237).chr(32);
             else 
				 $matn1.=chr(237);
		break;
        case 254: $matn1.=chr(237);//non 
		break;

        case 128:$matn1.=chr(48) ;//0 
		break;
        case 129:$matn1.=chr(49) ;//1 
		break;
        case 130:$matn1.=chr(50) ;//2 
		break;
        case 131:$matn1.=chr(51) ;//3 
		break;
        case 132:$matn1.=chr(52) ;//4 
		break;
        case 133:$matn1.=chr(53) ;//5 
		break;
        case 134:$matn1.=chr(54) ;//6 
		break;
        case 135:$matn1.=chr(55) ;//7 
		break;
        case 136:$matn1.=chr(56) ;//8 
		break;
        case 137:$matn1.=chr(57) ;//9 
		break;

        case 37:$matn1.=chr(37) ;//. 
		break;
        case 42:$matn1.=chr(42) ;//% 
		break;
        case 45:$matn1.=chr(45) ;//- 
		break;
        case 46:$matn1.=chr(46) ;//. 
		break;

        case 48:$matn1.=chr(48) ;//0 
		break;
        case 49:$matn1.=chr(49) ;//1 
		break;
        case 50:$matn1.=chr(50) ;//2 
		break;
        case 51:$matn1.=chr(51) ;//3 
		break;
        case 52:$matn1.=chr(52) ;//4 
		break;
        case 53:$matn1.=chr(53) ;//5 
		break;
        case 54:$matn1.=chr(54) ;//6 
		break;
        case 55:$matn1.=chr(55) ;//7 
		break;
        case 56:$matn1.=chr(56) ;//8 
		break;
        case 57:$matn1.=chr(57) ;//9 
		break;

        case 138:$matn1.=chr(161) ;// , 
		break;
        case 140:$matn1.=chr(191) ;// ? 
		break;
        case 40:$matn1.=chr(40) ;// ( 
		break;
        case 41:$matn1.=chr(41) ;// ) 
		break;
        case 47:$matn1.=chr(47) ;// / 
		break;
        case 255:$matn1.=chr(32) ;// ' ' 
		break;

       default:
        $matn1.=chr($j); 
		}
 //   ShowMessage($matn1);
	}
  //

  ///
$mat2='';$mat3='' ;

  for($i=0;$i<strlen($matn1);$i++)
	  {
     //  ShowMessage(matn{$i});
       if(strpos("1234567890/\'\\-()[]:{}&#!~,;?|.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl  mnopqrstuvwxyz ",$matn1{$i})===false)
		  {
               if(strlen($mat2)>0)
			  {
				    $mat3=$mat3.$mat2.$matn1{$i} ;
                    $mat2='';
			  }
              else
                    $mat3=$mat3.$matn1{$i} ;
		  }
        else
		  {

              if ($matn1{$i}=='(')
				  $matn1{$i}=')';
			  else
                 if ($matn1{$i}==')')
					$matn1{$i}='(';
           $mat2=$matn1{$i}.$mat2;
          }
	  }


   return trim($mat3.$mat2);
}

----------


## hbahjat

با سلام خدمت دوستان می خواستم ببینم هیچکس این کد تبدیل از ویندوز به داس را توی VB6نداره . با تشکر

----------


## Saeid59_m

من اینکار رو با مبدل پارسا 99 انجام می دادم 
دیگه نیازی به برنامه نویسی نبود

----------


## zohreh_r

با سلام
این کد را در کجا بنویسم

----------


## moradi_am

براي تبديل فونت سايه كسي تابعي سراغ نداره ؟ (تبديل سايه به ايران سيستم يا سايه به ويندوز)

----------


## alireza85

سلام 
تبديل اين ديتابيس كسي داره ؟؟؟

----------


## javid_rally

با عرض سلام و خسته نباشی خدمت دوستان 
من با دلفی 7 یک نرم افزار برای مطب نوشتم که حدود 2 ماه وقتمو گرفت ولی موقع تحویل متوجه شدم که دکتر باید اطلاعات بیمه رو به صورت یک فایل txt که اصطلاحا بهش میگن دیسکت بیمه تحویل بده.که اسمشم فکر کنم باید NOS1.txtباشه. من چند تا فایل txt که با نرم افزار های دیگه ساخته شده بود رو دیدم که متن عجیبی داشت منم ازش چیزی نفهمیدم بعد متوجه شدم که اداره بیمه این فایل رو بوسیله یک برنامه تحت dos باز میکنه .حالا من موندم چطوری یک همچین خروجی از برنامه ام بگیرم ؟البته چند تا سئوال دیگه هم دارم.
1. این فایل txt از report برنامه هست یا اطلاعات داخل بانک؟
2. چطور می تونم این فایل txt رو تو دلفی بسازم ؟
3. اطلاعاتی که بیمه میخواد باید بر اسا س فیلد ها و نام فیلد خاصی باشد؟یعنی نام فیلدها توسط بیمه تعریف شده و مشخص شده می باشد؟
4.برای این تبدیل از الگوریت خاصی باید تبعیت کرد؟
5. جریان این فایلها dbf چیه؟و چطور باید تو برنامه ام ازش استفاده کنم؟
در ضمن ممنون میشم اگر دوستان سورس و نمونه برنامه ای دارن بزارن . 
من نمونه کدی که صفحه های قبل بوده رو آزمایش کردم ولی خروجیش با فایل txt ی که من نمونشو دیدم فرق داشت . باتشکر فراوان 
**** راستی یکی بگه چطوری میتونم فایلمو اینجا بزارم تا بقیه بتونن دانلود کنن؟***

----------


## BORHAN TEC

> **** راستی یکی بگه چطوری میتونم فایلمو اینجا بزارم تا بقیه بتونن دانلود کنن؟***


برای این کار در پایین کادری که پستت رو در اون می نویسی بر روی حالت پیشرفته کلیک کن و برای ارسال فایل در صفحه ای که باز می شه با استفاده از قصمت ضمیمه نسبت به ارسال فایل اقدام کن. 
فایلت رو قرار بده. ما هم هر کمکی که از دستمون بر بیاد انجام می دیم.  :چشمک:

----------


## javid_rally

اینم فایل txt ی که گفتم البته یک نرم افزار هم دانلود کردم که رایگانه ولی چون حجمش کمی بالاست تو این 
سایت نتونستم بزارم ولی تو سایت دیگه ای آپلود میکنم بعد لینکشو میزارم این فایل خروجی همون برنامه است:
NOS1.rar

----------


## javid_rally

اینم لینک دانلود نرم افزاری که گفتم و فایل خروجیشو بالا گذاشتم:
http://rapidshare.com/files/44531533...rdis_2.3.7.zip

ممنون میشم اگه زودتر جواب بدین خیلی وقته که دنبالشم و خیلی جاهارو گشتم ولی جواب مناسبی پیدا نکردم .

----------

