رفتن به مطلب

کار با فایلها در ویژوال بیسیک 6.0


Iman-Emperatour

ارسال های توصیه شده

بعلت عدم وجود اشاره گر در ويژوال بيسيک عمليات کار با فايلها در آن نسبتاً ساده می باشد . بطور کلی فايلها بر دو نوع هستند :

1 - فايلهای متنی Text File : اين فايلها فقط شامل کاراکترهای اسکی وبرخی کاراکترهای خاص مانند انتهای خط و انتهای فايل هستند .

۲ - فايلهای باينریBinary File : شامل هر نوع کاراکتری می توانند باشند و کاربردهای گسترده ای دارندمانند بانک های اطلاعاتی ، فايلهای اجرائی ، فايلهای گرافيکی و غيره ويژوال بيسيک می تواند با هر دو نوع فايل کار کند .

 

چگونگی باز کردن فايلها

قبل از اينکه بتوان عمليات ورودی/خروجی را روی يک فايل انجام داد ابتدابايستی آنرا باز کرد . باز کردن فايلها در ويژوال بيسيک توسط دستور Open انجام میشود . فرمت کلی اين دستور بصورت زير است :

Open filename [For mode] [Access access][lock] As [#]filenumber [Len=reclen]

[ پارامترهای داخل کروشه اختياری هستند . ]

filename نام فايلی است که می خواهيم آنرا باز کنيم .

mode حالت باز کردن فايل است . اين حالتها عبارتند از :

- Input : فايل بعنوان ورودی بازمی شود .

- Output :فايل بعنوان خروجی باز می شود .

- Binary :فايل ازنوع باينری باز می شود .

- Append :فايل طوری باز می شود که بتوان به انتهایآن چيزی اضافه کرد .

- Random access نوع دسترسی به فايل را مشخص می کند .انواع دسترسيها عبارتند از :

- Read : خواندن فايل

- Write : نوشتن در فايل

- ReadWrite : خواندن و نوشتن فايل

- lock نوع دسترسی ساير برنامه ها بهاين فايل را مشخص می کند . انواع دسترسيها عبارتند از :

- Shared : دسترسیاشتراکی

- Lock Read

- Lock Write

- Lock Read Write

filenumber عددی است که ويژوال بيسيک از آن برای دسترسی به فايل استفاده می کند .اين عدد بايستی برای هر فايل منحصر بفرد و بين ۱ تا ۵۱۱ باشد . برای بدست آوردن اولين شماره آزاد می توان از تابع FreeFile استفاده کرد .

 

reclen :طول بافر فايل است . اين عدد بايستی از ۳۲۷۶۷ کو چکتر باشد .

در صورتی که فايلی که توسط filename مشخص شده وجود نداشته و فايل برای Append ، Binary ، Output و يا Random باز شده باشد در اينصورت يک فايل جديد با اين نام ساخته می شود .

در صورتی که فايل بصورت باينری باز شده باشد پارامتر Len ناديده گرفته می شود .

 

چگونگی بستن فايل

پس از پايان کار با فايل برای بستن آن از دستور Close استفاده می کنيم . فرمت اين دستور بصورت زير است :

Close #filenumber

دستورClose بدون هيچ پارامتری تمام فايلهای باز را می بندد .

کار با دايرکتوری

۱ - گرفتن Dir : توسط دستور Dir می توان نام فايلهای موجوددر يک دايرکتوری را بر اساس پارامترهايي که به آن می دهيم پيدا کنيم . برای مثال :

Myfile=Dir$("c:\text\*.txt)"

دستور فوق نام اولين فايل موجود دردايرکتوری C:\TEXT را که پسوند آنها txt باشد در متغير Myfile قرار می دهد . اگردستور فوق رابدون پارامتر مجدداً اجرا کنيم نام دومين فايل برگرداننده میشد و الی آخر

Dir دارای يک پارامتر اختياری است که نوع فايلهای مورد نظر را نيز می توان با آن مشخص نمود . مثال :

Myfile=Dir$("c:\text\*.txt",vbNormal)

مقادير ممکن اين پارامتر عبارتند از : vbNormal، vbHidden ، vbSystem ، vbDirectory

۲ - تغيير دايرکتوری : برای تغيير دايرکتوری از دستور ChDir استفاده می شود مثال :

ChDir "c:\windows\system32"

۳ - تغيير درايو : برای تغيير درايو از دستور ChDrive استفاده می شود مثال :

ChDrive "E:"

۴- ساخت دايرکتوری : برای ايجاد دايرکتوری جديد از دستور MKDir استفاده می شود مثال :

MKDir "c:\MyFolder"

۵ - حذف دايرکتوری : برای حذف دايرکتوری از دستور RmDir استفاده می شود مثال :

RmDir "C:\MyFoler"

خواندن از فايل :

 

۱ - دستور Input : توسط دستورهای Input و Line Input می توان محتوای فايلهای متنی و باينری را خواند .

دستور Input به دو صورت بکار می رود :

Input #Filenumber,ReadData

ReadData=Input(Charnum,Filenumber)

دستور اول کل يک فايل را خوانده و درمتغير ReadData قرار می دهد . دستور دوم ، تعداد Charnum بايت از فايلی با شماره Filenumber را خوانده و در متغير ReadData قرار می دهد .

اين دو دستور تمام کاراکترهای موجود در فايل را می خوانند . برای اينکه بتوان فايل را خط به خط خواند، از دستور Line Input استفاده کنيد :

Line Input #Filenumber,ReadData

البته از دستور Line Input بيشتر برای خواندن فايلهای متنی استفاده می شود زيراممکنست در فايل باينری هيچ کاراکتر انتهای خط ( CRLF ) وجود نداشته باشد و يکباره کل فايل خوانده شود .

۲ - دستور Get : از اين دستور برای خواندن فايلهای باينری با دسترسی تصادفی ( Random Access ) استفاده میشود :

Get #Filenumber,[Recordnum%],ReadData

اين دستور رکورد شماره Recordnum را ازفايلی با شماره Filenumber می خواند و در متغير ReadDataقرار می دهد . علامت کروشه نشان می دهد که پارامتر Recordnum اختياری است و در صورتيکه ذکر نشود داده ها ازرکورد بعدی فايل ( جائيکه اشاره گر فايل آنجا قرار دارد ) خوانده می شوند .

 

نوشتن در فايل :

۱ - دستور Print : توسط اين دستور می توان اطلاعاتی را در فايل قرار داد :

Print #FileNumber,WriteData

دستور فوق محتويات متغير WriteData را در فايلی با شماره FileNumber می نويسد . بوسيله دستورPrint می توان اطلاعات را بصورت خط به خط در فايل نوشت برای مثال :

Print #1,"Hello Visual Basic"+Vbcrlf

عبارت Vbcrlf نشان دهنده کاراکتر انتهای خط ( CRLF ) در ويژوال بيسيک می باشد .

 

۲ - دستور Put : اين دستور برای نوشتن داده ها در فايلهای باينری با دسترسی تصادفی بکار می رود :

Put #FileNumber,[Recordnum],WriteData

اين دستور محتويات متغير WriteData را دررکورد شماره Recordnum قرار می دهد .

 

تعيين محل رکورد در فايلهای بادسترسی تصادفی :

 

برای منتقل کردن اشاره گر فايل به يک رکورد در يک فايل باينری با دسترسی اتفاقی ، از دستور Seek استفاده می شود . اين دستور محل يک بايترا در فايل می گيرد و اشاره گر فايل را در آنجا قرار می دهد بنابراين دستورات Put وGet می توانند با اين رکورد کار کنند :

Seek #FileNumber,RecordNumber

تشخيص انتهای فايل :

برای اينکه متوجه شويم به انتهای يکفايل رسيده ايم از دستور EOF استفاده می کنيم . اين دستور يکی از مقادير True يا False را بر می گرداند که نشان می دهد به انتهای فايلرسيده ايم يا نه . از اين تابعدر حلقه های Do-While استفاده می شود :

Do While Not (EOF(FileNumer))

.

.

.

Loop

حلقه فوق تا زمانيکه فايل موردنظر به انتها نرسيده باشداجرا خواهد شد .

 

بدست آوردن طول يک فايل :

بوسيله دستور LOF می توان طول محتويات يک فايل را بدست آورد :

FileSize=LOF(FileNumber)

بدست آوردن محل اشاره گر فايل :

توسط دستور Loc می توان محلجاری اشاره گر فايل را بدست آورد . اجرا شدن اين دستور محل اشاره گر را تغيير نمیدهد :

FilePosition=Loc(FileNumber)

ساير عمليات کار با فايل :

۱ - حذف فايل :

برای حذف يک يا چند فايل از دستور Kill استفاده می شود :

Kill "C:\Temp\MyFile.txt"

Kill "C:\Temp\*.txt"

۲ - انتقال فايل:

برای انتقال يک فايل از يک دايرکتوری به دايرکتوری ديگر از دستور Name استفاده میشود . مبدا و مقصد بايستی روی يک درايو باشند . اگر دايرکتوری مبدا و مقصد يکی باشدفايل تغيير نام داده می شود :

Name "C:\Temp\File1.txt" To "C:\Temp2\File2.txt"x

۳- کپی کردن فايل :

برای کپی کردن يک فايل از يکدايرکتوری به دايرکتوری ديگر از دستور FileCopy استفاده می شود :

FileCopy "\File1.txt\ To "C:\Temp\File2.txt"

۴ - بدست آوردن تاريخ و زمان آخرين تغيير فايل و يا زمان ايجاد فايل :

برای اين کار از دستور FileDateTimeاستفاده میشود . ابتدا بايستی يک متغير از نوع Variant تعريف کرده و سپس توسط اين دستور تاريخو زمان موردنظر را استخراج کنيم :

Dim FileInfo As Variant

FileInfo=FileDateTime("C:\Temp\MyFile.txt")

۵ - استخراج طول فايل :

برای بدست آوردن طول يک فايل بر حسب بايت از دستور FileLen استفاده می شود :

FileSize=FileLen("C:\MyFile.txt")

۶ - تغيير صفت يک فايل :

برای تغيير صفت يک فايل از دستور SetAttr استفاده می شود . پارامترهای اين دستور عبارتنداز :

 

0 : فايل معمولی

2 : فايل مخفی

4 : فايل سيستمی

SetAttr FileNumber,FileAttrib

 

مقابله با خطاهای کار با فايل :

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

 

۵۲ : شماره يا نام فايل صحيح نيست

۵۳ : فايل پيدا نشد

۵۴ : حالت فايل صحيح نيست

۵۵ : فايل قبلاً بازشده

۵۸ : فايل از قبل وجود دارد

۵۹ : طول رکورد صحيح نيست

۶۱ : ديسک پراست

۶۲ : عبور از انتهای فايل

۶۳ : شماره رکورد صحيح نيست

۷۰ : دسترسی ممنوع است

۷۱ : ديسک آماده نيست

۷۶ : مسير پيدا نشد

در هنگام مقابله با خطا بهتراست از يک ساختار Select-Case استفاده کنيد :

Select Case Err

Case 71

MsgBox "Drive is Not Ready"

.

.

.

End Select

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...