پیش گفتار
گاهی با توجه به پیشرفت علم و تکنولوژی در زمینه کامپیوتر و به بازار آمدن انواع نرمافزارهای جدید که سازگاری شدیدی با محیط ویندوز و تقریبا به هیچ کدام از آنها محیط و برنامههای تحت سیستم عامل را پشتیبانی نمیکنند ضرورت پیدا میکند که برای کنار گذاشتن برنامههاایتحت Dos خود بتوانیم آنها را به طریقی تبدیل به انواع مختلف قابل شناسایی تحت ویندوز تبدیل کنیم.
یکی از موارد کاربرد آن در مواقعی است که به بانکهاب مختلف موجود در محیط بانک اطلاعاتی تحت Dos از حمله foxpro را بتوان به یک بانک تحت سیستم عامل win تبدیل کرد. خصوصا این که در کشورمان دادههای این بانکها تقریبا تماما فارسی بوده و مار را برای ما مشکل میکند.
به همین جهت تصمیم گرفته شد که با تکیه به تجربه چندین ساله در زمینه برنامهنویسیهای تحت Dos و Windows نرمافزاری فراهم آورده شود که نیازهای این گونه افراد را برآورده سازد.
در این جزوه سعی شده است که ضمن نشان دادن و توضیح کامل این نرمافزار تمام مطالب به صورت واضح و شفاف به همراه لیست و توضیح تمام دستورات به کار گرفته شده آورده شود تا استفاده کنندگان بتوانند درک بهتری از رابطهی این دو سیستم عامل با هم داشته باشند. در عین حال به جنبههایی از تئوری و مقدمات برنامهنویسی نیز توجه شده است.
در این جا لازم میدانم که از همکاری همه کسانی که تولید و آمادهسازی این پروژه با کمک آنان میسر گشت تشکر کنم. در این میان از آقای نیکفرجام و آقای اخلاقی که در تمام مراحل انجام این پروژه نهایت همکاری را داشتهاند سپسگذارم.
مهدی حسین زاده پاییز 85
نحوه پیادهسازی
به طور کلی این پروژه از دو نرمافزار جداگانه تشکیل شده که شامل یک بنامه تولید شده به زبان foxpro است که به طور خلاصه میتوان گفت حمل تبدیل تمام حروف و اعداد به کار گرفته شده در بانکها را شامل حروف و اعداد فارسی و انگلیسی بهکدهای اسکی آنان که قابل فهم برای محیط ویندوز باشد، فراهم میآورد.
همچنین شامل یک برنامه آسان شده به زبان Delphi است که در آن بانکهای تحت Dos که اطلاعات رکوردهای آن فقط شامل کد اسکی آن علائم و حروف است را تبدیل به کدهای معادل آن در محیط ویندوز و ایجاد یک بانک جدید تحت ویندوز مینماید.
در ذیل به جزئیات هر دو برنامه و تشریح عملکرد آنها میپردازیم:
تشریح برنامه تحت Dos
در ابتدا توسط تابع feount تعداد فیلدهای بانک را در متغیر c- field ریختهایم و یک آرایه به طول تعداد فیلدهای بانک و به اندازه 4 برای نگهداری لیست فیلدها به همراه نوع و اندازه آنها تعریف کرده و آن را با مقادیر بانک پر میکننیم.
c-field = fcount()
Dimension array 1 (o- field,4)
? afield (array 1)
سپس برای این که اطلاعات موجود در بانک پاک نشود یکبانک جدید درست کرده و تمام رکوردها را در آن اضافه میکنیم، توجه داشته باشید که طول فیلدهای از نوع رشتهای در بانک دوم ضرب در 3 شده (علت آن این است که چون حروف در مبنای اسکی بین Q تا 255 است و ما نیاز داریم در بانک دوم به جای حروف کدهای 3 حرفی آنها را قرار دهیم.
For I -=1To c-field
If array 1 (I,2) ="c"
Array 1 (I,3) = array1(I,3)* 3
Endif
Endfor
Create DBF c: 1bank 2 from Array Array1
Use bank 2
Append from bank
سپس در یک حلقه do- while و توسط یک تابع به نام conv 2 bin تمام بانک اول را پیمایش کرده و معادل اسکی آن را در بانک دوم میریزیم.
برای مشاهده کدهای اسکی حروف و علائم مورد استفاده در محیط Dos میتوانید فایل ppz.pro را اجرا نموده و نتیجه کار را در فایل p2.pro درون درایو c خود مشاهده کنید. اگر نرمافزای فارسیسازی مانند sepand را در سیستم خود اجرا کرده باشید خواهید دید که حروف فارسی کدهای 141 تا 175 و 224 را شامل شدهاند و کد حروف انگلیسی از 65 تا 122 میباشد.
تشریح برنامه تحت ویندوز
در این برنامه بانکهایی که توسط foxpro با کدهای اسکی پر شدهاند را تفسیر نموده و یک بانک جدید تحت paradox (*.DB) ایجاد و آنها را مقداردهی میکند، توجه داشته باشید که روش کار بدین صورت است که کدهای اسکی ؟ تا 255 در یک تابع به نام vagaf2win تشیخیص داده شده است و معادل آنها برگردانده میشود.
روش اجرا و به کارگیری برنامه
1- قبل از هر کار بانک تحت foxpro خود را با نام Bank. Dbf در داخل درایو c کپی کنید.
2- از طریق فرمان زیر در منوی Rum وارد محیط Dos شوید run = Cmd
3- توسط فرمان زیر به شاخه foxpro رفته و فایل foxpro.exe را اجرا نمایید.
CD
CD foxpro
4- از منوی file گزینه open را انتخاب و فایل ppl.PRG را از شاخه DBF موجود در این نرمافزار باز کنید.
5- کلیدهای ctrl+o را برای اجرای بنرامه بزنید (ممکن است عملیات اجرا برای چند دقیقه نیز طول بکشد بنابراین صبر کنید.)
تذکر: اگر در زمان اجرا با پیغامی مواجه شدید لطفا دکمه Ignore را بزنید) بعد از پایان اجرا میتوانید بانک دوم را توسط دستورات زیر مشاهده کنید:
Close Database
Use C:1bank2 . dbf
List
حالا میتوانید از محیط foxproخارج شوید، برای این کار از منوی file گزینه Quit را انتخاب کنید.
در این مرحله یک بانک به نام Bank 2.dbf برایتان درون درایو C ایجاد شده که شامل کدهای اسکی ازلاعات موجود در رکوردهای بانک شماست.
این بانک را باید برای وارد کردن به برنامه دوم درون فایل Impont Convert or. Mdb کنید، برای این کار فایل Convert or. Mdb را اجرا کنید، درون بانک راست کلیک کرده و گزینه Impont را بزندی، در این مرحله باید فایل Bank 2.dbf را از درایو C انتخاب و Impont کنید.
بعد از این کار فایل اصلی برنامه به نام Convertoic exe را اجرا کنید.
صفحهای ظاهر میشود که باید مراحل زیر را برای تبدیل بانک طی کنید.:
1- روی open کلیک کنید و فایل converton.mdb را از شاخه برنامه باز کنید.
2- در این مرحله باید نام بانک خود را (bank2) از لیست انتخاب کرده و ok را بزنید.
3- برای ایجاد یک بانک تحت paradox بر روی create table کلیک کنید.
4- در پایان روی convert کلیک کنید.
مشاهده می کنید که جدول سمت چپ شامل کدهای اسکی و جدول سمت راست همان کدها را تبدیل به معادل کاراکتری شان کرده است. این بانک درون شاخه برنامه بنام bank.db قابل دسترس است.
مرجع دستورات
APPEND FROM
این دستور رکوردها را از فایل filename خوانده و یک نسخه از آنها را به بانک فعال اضافه میکند. گزینه FOR/WHILE شرطی را مشخص میکند که رکوردها برای کپی شدن باید آن را دارا باشند. اگر فایل حاوی دادهها یکی از بانکهای فاکسپرو نباشد؟، در آن صورت نوعی را که مشخص میکنید باید یکی از انواع فایلهای قابل قبول فاکسپرو باشد. گزینههای قابل قبول فاکسپرو عبارتند از:
DELEIMITED, DELEIMITEDWITH delimiter, DELEIMITEDWITH TAB, DELEIMITEDWITHBLANK.XKS , WRK, WRL, WKS, WK3, WKI , SYLK, RPO, PDOX, MOD, FW2, DIF, SDF,
میدهند که چگونه میتوان به کمک این دستور رکوردهایی را از یک فایل (بانک) کوچک به داخل بانک فعال جاری کپی نمود.
CLEAR
این دستور صفحه نمایش را پاک میکند. این دستور را همچنین میتوان به عنوان گزینهای از دستور@ به کار برد؛ در آن صورت قسمت پایین و سمت راست موقعیت جاری مکاننما پاک میشود.
CREATE
این دستور یک بانک جدید ایجاد و ساختار آن را تعریف میکند. اگر نام فایل را مشخص نکنید، فاکسپرو هنگام ذخیره ساختار آن، برای دریافت آن اعلام آمادگی میکند. اگر نام فایل را مشخص کنید، فاکسپرو بانک را تحت حمایت همان نام ایجاد میکند. DBF به طور خودکار به عنوان انشعاب فایل در نظر گرفته میشود، مگر این که انشعاب دیگری را خود مشخص کنید.
وتی این دستور را برای ایجاد یک بانک اطلاعاتی وارد میکنید، صفحه مربوط تعریف ساختار بانک ظاهر میشود. این صفحه چهار ستون دارد که برای تعریف نام، نوع و اندازه و تعداد نقاط اعشاری فیلدها به کار میرود.
DIMENSION
این دستور یک آرایه ایجاد میکند (توجه داشته باشید که این دستور با FoxBASE+ و Clippcr سازگار است. برای سازگاری با Dbase IV از دستور DECLARE استفاده کنید) نام و ابعاد آرایه را باید در لیست تعریف آرایه مشخص کنید. نام آرایه باید حداکثر ده کاراکتر باشد. سطرها و ستونهای یک آرایه یک بعدی ایجاد میکند. وقتی سطرها و ستونهای یک آرایه را مشخص میکنید، آنها را به وسیله کاما از هم جدا کنید تا فاکسپرو یک آرایه دو بعدی ایجاد کند.
DO WHILE
دستور DO WHILE، دستورات بین DO WHILE و ENDDO را تا وقتی که شرط مورد نظر برقرار باشد، اجرا میکند. وقتی فاکسپرو با دستور DO WHILE مواجه میشود، ابتدا شرط پس از دستور را بررسی میکند. اگر شرط نادرست باشد، اجرای برنامه را از دستور پس از ENDDO اجرا میکند. وقتی فاکسپرو به دستور ENDDO میرسد، مجدداً شرط حلقه را بررسی میکند. اگر شرط هنوز برقرار باشد، دستورات داخل حلقه مجدداً اجرا میشوند. اگر شرط دیگر برقرار نباشد، فاکسپرو اجرای برنامه را از دستور بعد از ENDDO ادامه میدهد.
GOTO یا GO
این دستورات نشانگر فایل را به یک رکورد خاص انتقال میدهند. GO TO نشانگر فایل را به ابتدا و GO BOTTOM نیز آن را به انتهای فایل انتقال میدهد. اگر عددی را به همراه دستور به کار برید، آن عدد به عنوان شماره یک رکورد تلقی شدهو نشانگر فایل به همان رکورد انتقال داده میشود. با استفاده از گزینه IN نیز میتوانید نشانگر فایل ناحیههای کاری دیگر را به رکورد مورد نظر انتقال دهید. Alias ممکن است نام فایل و یا شماره ناحیه کاری مورد نظر باشد.
SET PATH
این دستور برای مشخص کردن مسیر جستجوی فایلها به کار میرود. در صورتی که فایل مورد نظر در دایرکتوری جاری یافت نشود، این مسیر نیز جستجو میشود. توجه داشته باشید که این دستور تاثیری بر روی مسیر جستجوی DOS ندارد؛ بلکه تنها یک مسیر جستجویی که به وسیله این دستور مشخص میکنید، مسیر جستجوی DOS نیز جستجو میشود.
REPLACE
این دستور مقادیر جدیدی را جایگزین محتوای قبل فیلدهای مشخص شده میکند. برای این که همزمان محتوای بیش از یک فیلد را تغییر دهید، کافی است آنها را با WITH expression مشخص کنید؛ توجه داشته باشید هر یک از آنها را به وسیله کاما از یکدیگر جدا کنید. با استفاده از گزینه FOR میتوانید شرط بخصوصی رامشخص کنید که در این صورت جایگزینی مقادیر تنها زمانی صورت میگیرد که شرط برقرار باشد. اگر از گزینه WHEN استفاده کنید، عمل جایگزینی تا وقتی ادامه مییابد که شرط برقرار باشد. اگر از هیچ یک از سه گزینه scope، FOR و یا WHLE استفاده نکیند، تنها محتوای رکورد جاری (رکوردی که نشانگر فایل نشان میدهد) تغییر داده میشود. اگر میخواهید متنی را به محتوای جاری یک فیلد memo اضافه کنید، از گزینه ADDTTIVE استفاده کنید. فاکسپرو بهطور خودکار کاراکتر اسکی شماره 13 (carriagc return) را بین مقدار قبل و جدید اضافه میکند. در نگارشهای 2و بالاتر، گزینه NOOPTIMIZE سبب میشود که فاکسپرو از تکنیکهای بهینهسازی داخلی خود (تکنولوژی Rushmore استفاده نکند
فرمت این مقاله به صورت Word و با قابلیت ویرایش میباشد
تعداد صفحات این مقاله 35 صفحه
پس از پرداخت ، میتوانید مقاله را به صورت انلاین دانلود کنید
دانلودمقاله برنامه نویسی با DOS