تابعی برای تبدیل بانکها از dos به windows
با سلام خدمت همه دوستان عزیز
این تابع رو برای تبدیل بانکهای 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;
1 ضمیمه
نقل قول: تابعی برای تبدیل بانکها از dos به windows
سلام
تبديل اين ديتابيس كسي داره ؟؟؟
نقل قول: تابعی برای تبدیل بانکها از dos به windows
با عرض سلام و خسته نباشی خدمت دوستان
من با دلفی 7 یک نرم افزار برای مطب نوشتم که حدود 2 ماه وقتمو گرفت ولی موقع تحویل متوجه شدم که دکتر باید اطلاعات بیمه رو به صورت یک فایل txt که اصطلاحا بهش میگن دیسکت بیمه تحویل بده.که اسمشم فکر کنم باید NOS1.txtباشه. من چند تا فایل txt که با نرم افزار های دیگه ساخته شده بود رو دیدم که متن عجیبی داشت منم ازش چیزی نفهمیدم بعد متوجه شدم که اداره بیمه این فایل رو بوسیله یک برنامه تحت dos باز میکنه .حالا من موندم چطوری یک همچین خروجی از برنامه ام بگیرم ؟البته چند تا سئوال دیگه هم دارم.
1. این فایل txt از report برنامه هست یا اطلاعات داخل بانک؟
2. چطور می تونم این فایل txt رو تو دلفی بسازم ؟
3. اطلاعاتی که بیمه میخواد باید بر اسا س فیلد ها و نام فیلد خاصی باشد؟یعنی نام فیلدها توسط بیمه تعریف شده و مشخص شده می باشد؟
4.برای این تبدیل از الگوریت خاصی باید تبعیت کرد؟
5. جریان این فایلها dbf چیه؟و چطور باید تو برنامه ام ازش استفاده کنم؟
در ضمن ممنون میشم اگر دوستان سورس و نمونه برنامه ای دارن بزارن .
من نمونه کدی که صفحه های قبل بوده رو آزمایش کردم ولی خروجیش با فایل txt ی که من نمونشو دیدم فرق داشت . باتشکر فراوان
**** راستی یکی بگه چطوری میتونم فایلمو اینجا بزارم تا بقیه بتونن دانلود کنن؟***
نقل قول: تابعی برای تبدیل بانکها از dos به windows
نقل قول:
**** راستی یکی بگه چطوری میتونم فایلمو اینجا بزارم تا بقیه بتونن دانلود کنن؟***
برای این کار در پایین کادری که پستت رو در اون می نویسی بر روی حالت پیشرفته کلیک کن و برای ارسال فایل در صفحه ای که باز می شه با استفاده از قصمت ضمیمه نسبت به ارسال فایل اقدام کن.
فایلت رو قرار بده. ما هم هر کمکی که از دستمون بر بیاد انجام می دیم. :چشمک:
1 ضمیمه
نقل قول: تابعی برای تبدیل بانکها از dos به windows
اینم فایل txt ی که گفتم البته یک نرم افزار هم دانلود کردم که رایگانه ولی چون حجمش کمی بالاست تو این
سایت نتونستم بزارم ولی تو سایت دیگه ای آپلود میکنم بعد لینکشو میزارم این فایل خروجی همون برنامه است:
ضمیمه 65738
نقل قول: تابعی برای تبدیل بانکها از dos به windows
اینم لینک دانلود نرم افزاری که گفتم و فایل خروجیشو بالا گذاشتم:
http://rapidshare.com/files/44531533...rdis_2.3.7.zip
ممنون میشم اگه زودتر جواب بدین خیلی وقته که دنبالشم و خیلی جاهارو گشتم ولی جواب مناسبی پیدا نکردم .