تحقیق درباره نرم افزار foxpro

راهنمای سایت

سایت اقدام پژوهی -  گزارش تخصصی و فایل های مورد نیاز فرهنگیان

1 -با اطمینان خرید کنید ، پشتیبان سایت همیشه در خدمت شما می باشد .فایل ها بعد از خرید بصورت ورد و قابل ویرایش به دست شما خواهد رسید. پشتیبانی : بااسمس و واتساپ: 09159886819  -  صارمی

2- شما با هر کارت بانکی عضو شتاب (همه کارت های عضو شتاب ) و داشتن رمز دوم کارت خود و cvv2  و تاریخ انقاضاکارت ، می توانید بصورت آنلاین از سامانه پرداخت بانکی  (که کاملا مطمئن و محافظت شده می باشد ) خرید نمائید .

3 - درهنگام خرید اگر ایمیل ندارید ، در قسمت ایمیل ، ایمیل http://up.asemankafinet.ir/view/2488784/email.png  را بنویسید.

http://up.asemankafinet.ir/view/2518890/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%AE%D8%B1%DB%8C%D8%AF%20%D8%A2%D9%86%D9%84%D8%A7%DB%8C%D9%86.jpghttp://up.asemankafinet.ir/view/2518891/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%AE%D8%B1%DB%8C%D8%AF%20%DA%A9%D8%A7%D8%B1%D8%AA%20%D8%A8%D9%87%20%DA%A9%D8%A7%D8%B1%D8%AA.jpg

لیست گزارش تخصصی   لیست اقدام پژوهی     لیست کلیه طرح درس ها

پشتیبانی سایت

در صورت هر گونه مشکل در دریافت فایل بعد از خرید به شماره 09159886819 در شاد ، تلگرام و یا نرم افزار ایتا  پیام بدهید
آیدی ما در نرم افزار شاد : @asemankafinet

تحقیق درباره نرم افزار foxpro

بازديد: 473

تحقیق درباره نرم افزار foxpro

گاهی با توجه به پیشرفت علم و تکنولوژی در زمینه کامپیوتر و به بازار آمدن انواع نرم‌افزارهای جدید که سازگاری شدیدی با محیط ویندوز و تقریبا به هیچ کدام از آنها محیط و برنامه‌های تحت سیستم عامل را پشتیبانی نمی‌کنند ضرورت پیدا می‌کند که برای کنار گذاشتن برنامه‌هاایتحت 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 استفاده نکند.

وقتی محتوای رکوردهای را به طور عمودی از طریق ویندوی دستورات تغییر می‌دهید، بسیار وقت کنید؛ کاربرد نادرست این دستور ممکن است خسارت جبران‌ناپذیری به همراه داشته باشد. اگر مطمئن نیستند که این دستور چه تاثیری بر روی بانک اطلاعاتی خواهد داشت، در آن صورت یک کپی با استفاده از دستور COPY TO ایجاد کرده و آزمایشات لازم را به جای نسخه اصلی بر روی نسخه دوم فایل به عمل آورید.

USE

  

این دستور یک بانک اطلاعاتی را همراه با فایلهای شاخص آن در یک ناحیه کاری باز می‌کند. اگر به جای نام فایل از ؟ استفاده کنید، فهرست فایلهای موجود ظاهرمی‌شود. با استفاده از گزینه‌های INDEX و ORDER مشخص کنید که کدام فایلهای شاخص باز یا فعال خواهند بود. با استفاده از گزینه ALLAS نیز می‌توانید یک فایل را در ناحیه کاری دیگر ؟

AFIELDS

قالب تابع

این تابع مشخصات فیلدهای بانک موجود در ناحیه کاری جاری را در عناصر یک آرایه ذخیره می‌کند. نام، نوع، طور و تعداد ارقام اعشاری فیلدها در عناصر آرایه ذخیره می‌شوند.

این آرایه که نام با expC مشخص می‌شود، با محتوای چهارستونی که عموماً به عنوان نتیجه دستور LIST STRUCTURE ظاهر می‌شوند، پر می شود. نام فیلدها در ستون اول ذخیره شده و محتوای ستون نیز عناصر کاراکتری خواهد بود. نوع فیلدها در ستون دوم ذخیره شده و محتوای ستون یک رشته یک کاراکتری خواهد بود؛ "C" برای فیلدهای کاراکتری، "D" برای فیلدهای نوع تاریخ، "L" برای فیلدهای منطقی،M برای فیلدهای memo،N برای فیلدهای عددی، و F برای فیلدهای اعشاری با نقطه ممیز شناور. طول فیلدها در ستون سوم ذخیره شده و محتوای آن عناصر عددی خواهد بود. تعداد ارقام اعشاری فیلدها در ستون چهارم و عناصر آن عددی خواهد بود.

ALLTRIM

قالب تابع

 این تابع blankهای ابتدا و انتهایی رشته کاراکتری expC را حذف می‌کند. این تابع از نظر عملکرد با LTRIM (RTRIM (expC)) معادل است.

FCOUNT

قالب تابع

این تابع تعداد فیلدهای یک بانک اطلاعاتی را برمی‌گرداند. برای برگرداندن تعداد فیلدهای بانکهای اطلاعاتی موجود در ناحیه‌های کاری دیگر نیز از alias استفاده کنید.

LEN

قالب تابع

این تابع طول  رشته کاراکتری expC را برمی‌گرداند. ExpC ممکن است یک فیلد memo باشد که در آن صورت طول متن ذخیره شده در آن برگردانده می‌شود. توجه داشته باشید که اگر expC نشان‌دهنده یک فیلد کاراکتری باشد، این تابع به جای این که طول متن موجود در آن را برگرداند، طول فیلد را برمی‌گرداند. برای به دست آوردن طول متن ذخیره شده در فیلدهای کاراکتری باید از تابع TRIM () استفاده کنید.

PROCEDRE

  

این دستور ابتدای هر پروسیجر مجزا رادر فایل پروسیجرها نشان می‌دهد. این فایل برای نگهداری پروسیجرهایی مورد استفاده قرار می‌گیرد به صورت روتین‌های مجزا در برنامه‌ها فراخوانده می‌شوند. برای ساختن یک پروسیجر، تمام دستورات مورد نیاز را بین PROCEDURE و RETURN قرار دهید (دستور RETURN در فاکس‌پرو اختیاری است؛ اما توصیه می‌شود که آن را برای مشخص شدن آنتهای یک پروسیجر به کاربرید) وقتی پروسیجرها در یکک فایل مجزا نگهداری می‌شوند، آن فایل را باید (قبل از فراخوانی یک پروسیجر)با استفاده از SET PROCEDURE معرف نمود. توجه داشته باشید که می‌توانید پروسیجرها را در یک فایل برنامه اصلی نگه داشته ودیگر از دستور SET PROCEDURE استفاده نکنید. قرار دادن پروسیجرها در یک فایل سبب افزایش سرعت اجرای برنامه می‌شود؛ چرا که هر بار که یک پروسیجر از برنامه اصلی فراخوانده می‌شود، دیگر نیازی نیست که آن پروسیجر از روی دیسک که داخل حافظه لود شود.

نام پروسیجرها باید حداکثر هشت کاراکتر باشد. نام یک پروسیجر می‌تواند شامل "-" ارقام و یا حروف باشد، ولیکن باید حتما با یک حرف آغاز شود. دقت داشته باشید که نام فایل برنامه را به پروسیجری که در آن وجود دارد اختصاص ندهید.

تعداد پروسیجرها را به ترتیب زیر انجام می‌دهد.

1-    برنامه کامپایل شده جاری جستجو می‌شود.

2-    فایل یاد شده در دستور SET PROCEDURE جستجو می‌شود.

3-    فایل برنامه‌ها جستجو می‌شود؛ این جستجو از آخرین برنامه آغاز و تا اولین برنامه ادامه می‌یابد.

4-    فایل اجرایی همنام با فایل پروسیجرها جستجو می‌شود.

اگر می‌خواهید پروسیجرها را در برنامه اصلی نگه دارید، صورت آنها را در انتهای برنامه قرار دهید. دلیل این کار این است که دستورات پس از PROCEDURE تا وقتی که مستقیما توسط دستور DO فراخوانده نشده باشند، اجرا نمی‌شوند؛ به عبارت دیگر اگر بخواهید دستور PROCEDURE، چند دستور دیگر، و دستور RETURN را در میانه یک برنامه موجود قرار دهید، در آن صورت دستورات پس از RETURN هیچ‌گاه اجرا نخواهد شد.

PUBLIC

این دستور متغیر یا آرایه‌های مورد نظر به صورت عمومی تعریف می‌کند تا مقادیر آنها برای تمام سطوح بالاتر یک برنامه قابل دستیابی باشد. بر خلاف دستور RETURN، این دستور متغیرها را ایجاد  و در همان لحظه به عنوان متغیرهای عمومی معرفی می‌کند. اما توجه داشته باشید که متغیرهای ایجاد شده تماماً از نوع منطقی خواهند بود؛ مقدار اوله نادرست به آنها اختصاص می‌یابد. پس از ایجاد یک متغیر می‌توانید مقدار دیگری (نوع دیگر) به آن اختصاص دهید. به عنوان مثال اگر بخواهید یک متغیر منطقی به نام PRINTIT ایجاد کنید و مقدار اولیه نادرست را به آن اختصاص دهید، در آن صورت می‌توانید از دستور زیر استفاده کنید:

PUBLICPRINTIT

اما اگر بخواهید یک متغیر عددی به نام AGE  ایجاد کنید و عدد 18 را در آن ذخیره کنید، در آن صورت لازم است که پس از تعریف متغییر، مقدار مورد نظر را با استفاده از دستور دیگری در آن ذخیره کنید:

PUBLIC AGE

STORE 18 TO AGE


سورس برنامه فاکس پرو

set path to  c:\ ; c:\

CLOSE DATABASES

use BANK

go top

public s,r,input1,r1,r2,c_field,I,J,l_str

**************************************

c_field=fcount()

DIMENSION array1(c_field,4)

? afield(array1)

FOR I=1 TO c_field

      IF array1(I,2)="C" 

                         array1(I,3)=array1(I,3)*3

      ENDIF       

ENDFOR        

CREATE DBF C:\bank2 FROM ARRAY array1

use bank2

append from bank

**************************************

use bank2

do while .not. eof()

r=""

s=""

clea

**************************************

FOR I=1 TO c_field

      input1=array1(I,1)

      r2=&input1

      IF array1(I,2)="C"

               s=alltrim(r2)

               do conv2bin

              

      ELSE

      IF array1(I,2)="N"

               r=r2

      ELSE

               s=alltrim(r2)

               do conv2bin

      ENDIF

      ENDIF

      REPLACE &input1 WITH r

ENDFOR        

************************************

skip 1

enddo

retu

**********

**********

proc conv2bin

      c=1

      ss=""

      r=""

      ss=s

 

      for c=1 to  len(ss)

               s=alltrim(str(asc(substr(ss,c,1))))

               if (len(s))=1 

                         re= "00"+s

               endif

               if (len(s))=2 

                         re= "0"+s

               endif

               if (len(s))=3 

                         re= s

               endif 

               r=r+re

 

retu

**********

**********

سورس برنامه دلفی

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, DBCtrls, Mask, DB, ADODB, Grids, DBGrids, ExtCtrls,

  DBTables, ExtDlgs;

 

type

  TFormConverter = class(TForm)

    Button1: TButton;

    ListBox1: TListBox;

    DBGrid1: TDBGrid;

    DataSourceSource: TDataSource;

    ADOTableSource: TADOTable;

    DBGrid2: TDBGrid;

    ListBox2: TListBox;

    OpenDialog1: TOpenDialog;

    Button2: TButton;

    Label1: TLabel;

    Panel1: TPanel;

    ComboBox1: TComboBox;

    Label3: TLabel;

    Button3: TButton;

    ADOConnection1: TADOConnection;

    Button4: TButton;

    ListBox3: TListBox;

    ListBox4: TListBox;

    Button9: TButton;

    ListSize: TListBox;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Button9Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

 

  private

    private

     taxamount:tfloatfield;

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormConverter: TFormConverter;

  countfield:integer;

  mytable:ttable;

   mydatasource:tdatasource;

implementation

 

{$R *.dfm}

//

 

Function Vegaf2Win(Source:string):string;

Var ch:Byte;

    T:String;

Begin

    Ch:=StrToInt(Source);

    T:='';

    Case Ch OF

      //***********

        32:  t:=' ';

        33:  t:='!';

        34:  t:='"';

        35:  t:='#';

        36:  t:='$';

        37:  t:='%';

        38:  t:='&';

        39:  t:=',';

        40:  t:=')';

        41:  t:='(';

        42:  t:='*';

        43:  t:='+';

        44:  t:=',';

        45:  t:='-';

        46:  t:='.';

        47:  t:='/';

        48:  t:='0';

        49:  t:='1';

        50:  t:='2';

        51:  t:='3';

        52:  t:='4';

        53:  t:='5';

        54:  t:='6';

        55:  t:='7';

        56:  t:='8';

        57:  t:='9';

       ///////////

        58: t:=':';

        59: t:=';';

        60: t:='<';

        61 : t:='=';

        62 : t:='>';

        63 : t:='?';

        64 : t:='@';

        65 : t:='A';

        66 : t:='B';

        67 : t:='C';

        68 : t:='D';

        69 : t:='E';

        70 : t:='F';

        71 : t:='G';

        72 : t:='H';

        73 : t:='I';

        74 : t:='J';

        75 : t:='K';

        76 : t:='L';

        77 : t:='M';

        78 : t:='N';

        79 : t:='O';

        80 : t:='P';

        81 : t:='Q';

        82 : t:='R';

        83 : t:='S';

        84 : t:='T';

        85 : t:='U';

        86 : t:='V';

        87 : t:='W';

        88 : t:='X';

        89 : t:='Y';

        90 : t:='Z';

        91 : t:='[';

        92 : t:='\';

        93 : t:=']';

        94 : t:='^';

        95 : t:='_';

        96 : t:='`';

        97 : t:='a';

        98 : t:='b';

        99 : t:='c';

       100 : t:='d';

       101 : t:='e';

       102 : t:='f';

       103 : t:='g';

       104 : t:='h';

       105 : t:='i';

       106 : t:='j';

       107 : t:='k';

       108 : t:='l';

       109 : t:='m';

       110 : t:='n';

       111 : t:='o';

       112 : t:='p';

       113 : t:='q';

       114 : t:='r';

       115 : t:='s';

       116 : t:='t';

       117 : t:='u';

       118 : t:='v';

       119 : t:='w';

       120 : t:='x';

       121 : t:='y';

       122 : t:='z';

       123 : t:='{';

       124 : t:='|';

       125 : t:='}';

       126 : t:='~';

       127 : t:='';

 

       ///////////

       128:  t:='0';

       129:  t:='1';

       130:  t:='2';

       131:  t:='3';

       132:  t:='4';

       133:  t:='5';

       134:  t:='6';

       135:  t:='7';

       136:  t:='8';

       137:  t:='9';

       138:  t:=',';

       139:  t:='-';

       140:  t:='¿';

       141:  t:='Â';

       142:  t:='Æ';

       143:  t:='Á';

       144:  t:='Ç';

       145:  t:='Ç';

       146:  begin t:='È'; t:=t+' ';  end;

       147:  t:='È';

       148:  begin t:=''; t:=t+' ';  end;

       149:  t:='';

       150:  begin t:='Ê'; t:=t+' ';  end;

       151:  t:='Ê';

       152:  begin t:='Ë'; t:=t+' ';  end;

       153:  t:='Ë';

       154:  begin t:='Ì'; t:=t+' ';  end;

       155:  t:='Ì';

       156:  begin t:=''; t:=t+' ';  end;

       157:  t:='';

       158:  begin t:='Í'; t:=t+' ';  end;

       159:  t:='Í';

       160:  begin t:='Î'; t:=t+' ';  end;

       161:  t:='Î';

       162:  t:='Ï';

       163:  t:='Ð';

       164:  t:='Ñ';

       165:  t:='Ò';

       166:  t:='Ž';

       167:  begin t:='Ó'; t:=t+' ';  end;

       168:  t:='Ó';

       169:  begin t:='Ô'; t:=t+' ';  end;

       170:  t:='Ô';

       171:  begin t:='Õ'; t:=t+' ';  end;

       172:  t:='Õ';

       173:  begin t:='Ö'; t:=t+' ';  end;

       174:  t:='Ö';

       175:  t:='Ø';

/////////////////////////

       224:  t:='Ù';

       225:  begin t:='Ú'; t:=t+' ';  end;

       226:  begin t:='Ú'; t:=t+' ';  end;

       227:  t:='Ú';

       228:  t:='Ú';

       229:  begin t:='Û'; t:=t+' ';  end;

       230:  begin t:='Û'; t:=t+' ';  end;

       231:  t:='Û';

       232:  t:='Û';

       233:  begin t:='Ý'; t:=t+' ';  end;

       234:  t:='Ý';

       235:  begin t:='Þ'; t:=t+' ';  end;

       236:  t:='Þ';

       237:  begin t:='˜'; t:=t+' ';  end;

       238:  t:='˜';

       239:  begin t:=''; t:=t+' ';  end;

       240:  t:='';

       241:  begin t:='á'; t:=t+' ';  end;

       242:  t:='áÇ';

       243:  t:='á';

       244:  begin t:='ã'; t:=t+' ';  end;

       245:  t:='ã';

       246:  begin t:='ä'; t:=t+' ';  end;

       247:  t:='ä';

       248:  t:='æ';

       249:  begin t:='å'; t:=t+' ';  end;

       250:  t:='å';

       251:  t:='å';

       252:  begin t:='í'; t:=t+' ';  end;

       253:  begin t:='í'; t:=t+' ';  end;

       254:  t:='í';

    End;

    IF t<>'' Then Vegaf2Win:=t;

End;

//------------------*********------------------

procedure Splitter(Source:String);

var Counter:Integer;

begin

    FormConverter.ListBox1.Clear;

    Counter:=1;

    while (Counter<=length(Source)) do

    begin

        Formconverter.ListBox1.AddItem(copy(Source,Counter,3),Formconverter);

        inc(Counter,3)

    End;

end;

//------------------*********------------------

//------------------*********------------------

Function vgf2WinNumber(strSource:String):String;

var i,j:Integer;

    SubStr,CompleteStr:string;

begin

    Splitter(strSource);

    for i:=0 to Formconverter.ListBox1.Items.Count-1 do

    Begin

        Substr:=Vegaf2Win(formconverter.ListBox1.Items.Strings[i]);

        if (Substr='0') or

        (Substr='1') or

        (Substr='2') or

        (Substr='3') or

        (Substr='4') or

        (Substr='5') or

        (Substr='6') or

        (Substr='7') or

        (Substr='8') or

        (Substr='9') or

        (Substr='/') or

        (Substr='\') or

        (Substr='A') or

        (Substr='B') or

        (Substr='C') or

        (Substr='D') or

        (Substr='E') or

        (Substr='F') or

        (Substr='G') or

        (Substr='H') or

        (Substr='I') or

        (Substr='J') or

        (Substr='K') or

        (Substr='L') or

        (Substr='M') or

        (Substr='N') or

        (Substr='O') or

        (Substr='P') or

        (Substr='Q') or

        (Substr='R') or

        (Substr='S') or

        (Substr='T') or

        (Substr='U') or

        (Substr='V') or

        (Substr='W') or

        (Substr='X') or

        (Substr='Y') or

        (Substr='Z') or

        (Substr='a') or

        (Substr='b') or

        (Substr='c') or

        (Substr='d') or

        (Substr='e') or

        (Substr='f') or

        (Substr='g') or

        (Substr='h') or

        (Substr='i') or

        (Substr='j') or

        (Substr='k') or

        (Substr='l') or

        (Substr='m') or

        (Substr='n') or

        (Substr='o') or

        (Substr='p') or

        (Substr='q') or

        (Substr='r') or

        (Substr='s') or

        (Substr='t') or

        (Substr='u') or

        (Substr='v') or

        (Substr='w') or

        (Substr='x') or

        (Substr='y') or

        (Substr='z')  then  CompleteStr:=CompleteStr+SubStr

        Else CompleteStr:=SubStr+CompleteStr;

    end;

    vgf2WinNumber:=CompleteStr;

end;

//------------------*********------------------

Function Counter(var ID:Integer):String;

var II,i,j:Integer;

    St,Sub,s2,StEnd:string;

Begin

    inc(id);

    s2:=inttostr(id);

    IF length(s2)>=15 Then Counter:=s2;

    for i:=1 to 15-length(s2) do

      s2:='0'+s2;

    Counter:=s2;

End;

 

//

procedure TFormConverter.Button1Click(Sender: TObject);

var memoindicator:boolean;

begin

    DBGrid1.Update;

    ListBox2.AddItem(TimeToStr(Time),Formconverter);

    memoindicator:=false;

    myTable.Open;

    adoTableSource.Open;

 

       while Not (ADOTableSource.Eof) do

       Begin

          countfield:=listbox3.Count-1;

          myTable.Append;

          while (countfield >= 0) do begin

            IF (listbox4.Items.Strings[countfield]='string') Then

              myTable.FieldByName(listbox3.Items.Strings[countfield]).Text:=vgf2WinNumber(ADOTableSource.FieldByName(listbox3.Items.Strings[countfield]).Text)

              else IF (listbox4.Items.Strings[countfield]='memo') Then

                      begin

                      end

                    else

              myTable.FieldByName(listbox3.Items.Strings[countfield]).Text:=ADOTableSource.FieldByName(listbox3.Items.Strings[countfield]).Text;

              countfield:=countfield-1;

                                     end;

           myTable.Post;

          ADOTableSource.Next;

       end;

 

    ListBox2.AddItem(TimeToStr(Time),Formconverter);

end;

 

procedure TFormConverter.Button2Click(Sender: TObject);

var

  SL: TStrings;

  index: Integer;

begin

    ADOConnection1.Close;

    ComboBox1.Clear;

 

   if OpenDialog1.Execute then begin

 

      ADOTablesource.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+OpenDialog1.InitialDir+OpenDialog1.FileName+';Persist Security Info=False';

      label1.Caption:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+OpenDialog1.InitialDir+OpenDialog1.FileName+';Persist Security Info=False';

      SL := TStringList.Create;

  try

    ADOconnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+OpenDialog1.InitialDir+OpenDialog1.FileName+';Persist Security Info=False';

    ADOConnection1.GetTableNames(SL, False);

    for index := 0 to (SL.Count - 1) do begin

      comboBox1.Items.Add(SL[index]);

           end;

  finally

    SL.Free;

 

  end;

    ComboBox1.Text:=ComboBox1.Items[0];

    panel1.Visible:=true;

    end;

end;

 

procedure TFormConverter.Button3Click(Sender: TObject);

 begin

          ADOTablesource.Active:=false;;

          ADOTableSource.TableName:=ComboBox1.Text;

          ADOTablesource.Active:=true;

          panel1.Visible:=false;

          dbgrid1.Update;

          dbgrid2.Update;

end;

 

procedure TFormConverter.Button4Click(Sender: TObject);

begin

panel1.Visible:=false;

end;

 

procedure TFormConverter.Button5Click(Sender: TObject);

const

  myfielddefs:array[ftunknown..ftTypedBinary]of string [11]=

    ('unknown','string','smallint','integer','word','boolean','float'

      ,'currency','bcd','date','time','datetime','bytes','varbytes','autoinc','blob','memo','graphic','fmtmemo','paradoxole','dbaseole','typedbinary');

var

  i,indx,sizefield:integer;

  definition1,definition2:string;

begin

  ListBox3.Clear;

  ListBox4.clear;

  Listsize.Clear;

  for i:=0 to adotablesource.FieldCount -1 do begin

      definition1 :=ADOTableSource.Fields[i].DisplayLabel;

      definition2:= myfielddefs[ADOTableSource.Fields[i].datatype];

      sizefield:=ADOTableSource.Fields[i].Size;

      ADOTableSource.IndexDefs.Update;

       if ADOTableSource.Fields[i].IsIndexField then begin

           indx :=ADOTableSource.IndexDefs.IndexOf(ADOTableSource.Fields[i].Name);

          if indx > -1 then

            if ixprimary in ADOTableSource.IndexDefs[indx].Options then

                definition1:=definition1+ '(primary)';

           end;

       listbox3.Items.Add(definition1);

       listbox4.Items.Add(definition2);

       listsize.Items.Add(inttostr(sizefield));

 

    end;

    for i:=0 to listbox4.Count-1 do

        IF (listbox4.Items.Strings[i] ='v@')then listbox4.Items.Strings[i]:='string';

end;

 

procedure TFormConverter.Button9Click(Sender: TObject);

const

  myfielddefs:array[ftunknown..ftTypedBinary]of string [11]=

    ('unknown','string','smallint','integer','word','boolean','float'

      ,'currency','bcd','date','time','datetime','bytes','varbytes','autoinc','blob','memo','graphic','fmtmemo','paradoxole','dbaseole','typedbinary');

var

  i,indx,sizefield:integer;

  definition1,definition2:string;

  count2:integer;

  fielddef:integer;

begin

 /////////get list of field from bank1/////////////

 ListBox3.Clear;

  ListBox4.clear;

  Listsize.Clear;

  for i:=0 to adotablesource.FieldCount -1 do begin

      definition1 :=ADOTableSource.Fields[i].DisplayLabel;

      definition2:= myfielddefs[ADOTableSource.Fields[i].datatype];

      sizefield:=(ADOTableSource.Fields[i].Size) div 3;

      ADOTableSource.IndexDefs.Update;

       if ADOTableSource.Fields[i].IsIndexField then begin

           indx :=ADOTableSource.IndexDefs.IndexOf(ADOTableSource.Fields[i].Name);

          if indx > -1 then

            if ixprimary in ADOTableSource.IndexDefs[indx].Options then

                definition1:=definition1+ '(primary)';

           end;

       listbox3.Items.Add(definition1);

       listbox4.Items.Add(definition2);

       listsize.Items.Add(inttostr(sizefield));

 

    end;

    for i:=0 to listbox4.Count-1 do

        IF (listbox4.Items.Strings[i] ='v@')then listbox4.Items.Strings[i]:='string';

 

 /////////////////create table for bank2//////

 

  countfield:=listbox3.Items.Count;

  count2:=0;

  with mytable do begin

      //databasename:='DBDemos';

      tablename:='bank.db';

       while (countfield > count2) do

               begin

               IF (listbox4.Items.Strings[count2]) ='string'then fielddefs.add(listbox3.Items.Strings[count2],ftstring,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='smallint'then fielddefs.add(listbox3.Items.Strings[count2],ftsmallint,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='integer'then fielddefs.add(listbox3.Items.Strings[count2],ftinteger,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='word'then fielddefs.add(listbox3.Items.Strings[count2],ftword,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='boolean'then fielddefs.add(listbox3.Items.Strings[count2],ftboolean,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='float'then fielddefs.add(listbox3.Items.Strings[count2],ftfloat,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='currency'then fielddefs.add(listbox3.Items.Strings[count2],ftcurrency,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='bcd'then fielddefs.add(listbox3.Items.Strings[count2],ftbcd,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='date'then fielddefs.add(listbox3.Items.Strings[count2],ftdate,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='time'then fielddefs.add(listbox3.Items.Strings[count2],fttime,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='datetime'then fielddefs.add(listbox3.Items.Strings[count2],ftdatetime,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='bytes'then fielddefs.add(listbox3.Items.Strings[count2],ftbytes,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='varbytes'then fielddefs.add(listbox3.Items.Strings[count2],ftvarbytes,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='autoinc'then fielddefs.add(listbox3.Items.Strings[count2],ftautoinc,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='blob'then fielddefs.add(listbox3.Items.Strings[count2],ftblob,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='memo'then fielddefs.add(listbox3.Items.Strings[count2],ftmemo,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='graphic'then fielddefs.add(listbox3.Items.Strings[count2],ftgraphic,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='fmtmemo'then fielddefs.add(listbox3.Items.Strings[count2],ftfmtmemo,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='paradoxole'then fielddefs.add(listbox3.Items.Strings[count2],ftparadoxole,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='dbaseole'then fielddefs.add(listbox3.Items.Strings[count2],ftdbaseole,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='typedbinary'then fielddefs.add(listbox3.Items.Strings[count2],fttypedbinary,strtoint(listsize.Items.Strings[count2]),false)

               else IF (listbox4.Items.Strings[count2]) ='unknown'then fielddefs.add(listbox3.Items.Strings[count2],ftunknown,strtoint(listsize.Items.Strings[count2]),false);

               fielddefs[count2].CreateField(mytable);

               count2:=count2 + 1;

             end;

           taxamount:=tfloatfield.Create(mytable);

     mytable.CreateTable;

     end;

     mydatasource:=tdatasource.Create(self);

     mydatasource.DataSet:=mytable;

     with dbgrid1 do

     begin

        parent:=self;

        datasource:=mydatasource;

      end;

      dbgrid1.Update;

      mytable.ReadOnly:=false;

     mytable.Active:=true;

     end;

 

procedure TFormConverter.FormCreate(Sender: TObject);

begin

mytable:=ttable.Create(self);

end;

 

end.


فهرست مطالب

نحوه پیاده‌سازی.. 3

تشریح برنامه تحت Dos. 3

تشریح برنامه تحت ویندوز4

روش اجرا و به کارگیری برنامه. 5

مرجع دستورات... 7

APPEND FROM... 7

CLEAR.. 7

CREATE.. 7

DIMENSION.. 8

DO WHILE.. 9

GOTO یا GO.. 9

SET PATH.. 9

REPLACE.. 10

USE.. 11

AFIELDS. 11

ALLTRIM... 12

FCOUNT.. 12

LEN.. 12

PROCEDRE.. 13

PUBLIC.. 14

سورس برنامه فاکس پرو16

سورس برنامه دلفی

منبع : سايت علمی و پژوهشي آسمان--صفحه اینستاگرام ما را دنبال کنید
اين مطلب در تاريخ: پنجشنبه 21 اسفند 1393 ساعت: 11:37 منتشر شده است
برچسب ها : ,,,,
نظرات(0)

شبکه اجتماعی ما

   
     

موضوعات

پيوندهاي روزانه

تبلیغات در سایت

پیج اینستاگرام ما را دنبال کنید :

فرم های  ارزشیابی معلمان ۱۴۰۲

با اطمینان خرید کنید

پشتیبان سایت همیشه در خدمت شماست.

 سامانه خرید و امن این سایت از همه  لحاظ مطمئن می باشد . یکی از مزیت های این سایت دیدن بیشتر فایل های پی دی اف قبل از خرید می باشد که شما می توانید در صورت پسندیدن فایل را خریداری نمائید .تمامی فایل ها بعد از خرید مستقیما دانلود می شوند و همچنین به ایمیل شما نیز فرستاده می شود . و شما با هرکارت بانکی که رمز دوم داشته باشید می توانید از سامانه بانک سامان یا ملت خرید نمائید . و بازهم اگر بعد از خرید موفق به هردلیلی نتوانستیدفایل را دریافت کنید نام فایل را به شماره همراه   09159886819  در تلگرام ، شاد ، ایتا و یا واتساپ ارسال نمائید، در سریعترین زمان فایل برای شما  فرستاده می شود .

درباره ما

آدرس خراسان شمالی - اسفراین - سایت علمی و پژوهشی آسمان -کافی نت آسمان - هدف از راه اندازی این سایت ارائه خدمات مناسب علمی و پژوهشی و با قیمت های مناسب به فرهنگیان و دانشجویان و دانش آموزان گرامی می باشد .این سایت دارای بیشتر از 12000 تحقیق رایگان نیز می باشد .که براحتی مورد استفاده قرار می گیرد .پشتیبانی سایت : 09159886819-09338737025 - صارمی سایت علمی و پژوهشی آسمان , اقدام پژوهی, گزارش تخصصی درس پژوهی , تحقیق تجربیات دبیران , پروژه آماری و spss , طرح درس