[size=medium]
کار با فایل در ویژوال بیسیک
ار با فایل در ویژوال بیسیک - بخش اول
مقدمه
بعلت عدم وجود اشاره گر در ویژوال بیسیک عملیات کار با فایلها در آن
نسبتاً ساده می باشد .
بطور کلی فایلها بر دو نوع هستند :
این فایلها فقط شامل کاراکترهاي اسکی و : Text File 1 - فایلهاي متنی
برخی کاراکترهاي خاص مانند انتهاي خط و انتهاي فایل هستند .
شامل هر نوع کاراکتري می توانند : Binary File 2 - فایلهاي باینري
باشند و کاربردهاي گسترده اي دارند مانند بانک هاي اطلاعاتی ، فایلهاي
اجرائی ، فایلهاي گرافیکی و غیره
ویژوال بیسیک می تواند با هر دو نوع فایل کار کند .
چگونگی باز کردن فایلها
قبل از اینکه بتوان عملیات ورودي/خروجی را روي یک فایل انجام داد
ابتدا بایستی آنرا باز کرد . باز کردن فایلها در ویژوال بیسیک توسط
انجام می شود . فرمت کلی این دستور بصورت زیر است Open دستور
:
Open filename [For mode] [Access access][lock] As
filenumber [Len=reclen]x[#]
[ پارامترهاي داخل کروشه اختیاري هستند . ]
نام فایلی است که می خواهیم آنرا باز کنیم . filename
حالت باز کردن فایل است . این حالتها عبارتند از : mode
فایل بعنوان ورودي باز می شود . : Input -
فایل بعنوان خروجی باز می شود . : Output -
فایل از نوع باینري باز می شود . : Binary -
فایل طوري باز می شود که بتوان به انتهاي آن چیزي : Append -
اضافه کرد .
Random -
نوع دسترسی به فایل را مشخص می کند . انواع دسترسیها access
عبارتند از :
خواندن فایل : Read -
نوشتن در فایل : Write -
خواندن و نوشتن فایل : ReadWrite -
نوع دسترسی سایر برنامه ها به این فایل را مشخص می کند . lock
انواع دسترسیها عبارتند از :
دسترسی اشتراکی : Shared -
Lock Read -
Lock Write -
Lock Read Write -
عددي است که ویژوال بیسیک از آن براي دسترسی به filenumber
فایل استفاده می کند .این عدد بایستی براي هر فایل منحصر بفرد و بین
1 تا 511 باشد . براي بدست آوردن اولین شماره آزاد می توان از تابع
استفاده کرد . FreeFile
طول بافر فایل است . این عدد بایستی از 32767 کو چکتر باشد . : reclen
مشخص شده وجود نداشته و filename در صورتی که فایلی که توسط
باز شده باشد Random و یا Output ،Binary ،Append فایل براي
در اینصورت یک فایل جدید با این نام ساخته می شود .
نادیده Len در صورتی که فایل بصورت باینري باز شده باشد پارامتر
گرفته می شود .
چگونگی بستن فایل
استفاده می Close پس از پایان کار با فایل براي بستن آن از دستور
کنیم . فرمت این دستور بصورت زیر است :
Close #filenumber
بدون هیچ پارامتري تمام فایلهاي باز را می بندد . Close دستور
کار با دایرکتوري
می توان نام فایلهاي موجود در یک Dir توسط دستور : Dir 1 - گرفتن
دایرکتوري را بر اساس پارامترهایی که به آن می دهیم پیدا کنیم . براي
مثال :
Myfile=Dir$("c:\text\*.txt)"x
را که C:\TEXT دستور فوق نام اولین فایل موجود در دایرکتوري
قرار می دهد . اگر دستور فوق را Myfile باشد در متغیر txt پسوند آنها
بدون پارامتر مجدداً اجرا کنیم نام دومین فایل برگرداننده می شد و الی
آخر
داراي یک پارامتر اختیاري است که نوع فایلهاي مورد نظر را نیز می Dir
توان با آن مشخص نمود . مثال :
Myfile=Dir$("c:\text\*.txt",vbNormal)x
مقادیر ممکن این پارامتر عبارتند از :
vbDirectory ، vbSystem ،vbHidden ،vbNormal
ChDir 2 - تغییر دایرکتوري : براي تغییر دایرکتوري از دستور
استفاده می شود مثال :
ChDir "c:\windows\system32"x
استفاده می ChDrive 3 - تغییر درایو : براي تغییر درایو از دستور
شود مثال :
ChDrive "E:"x
MKDir 4 - ساخت دایرکتوري : براي ایجاد دایرکتوري جدید از دستور
استفاده می شود مثال :
MKDir "c:\MyFolder"x
RmDir 5 - حذف دایرکتوري : براي حذف دایرکتوري از دستور
استفاده می شود مثال :
RmDir "C:\MyFoler"x
کار با فایل در ویژوال بیسیک - بخش دوم
خواندن از فایل :
می توان Input Line و Input توسط دستورهاي : Input 1 - دستور
محتواي فایلهاي متنی و باینري را خواند .
به دو صورت بکار می رود : Input دستور
Filenumber,ReadData# Input
ReadData=Input(Charnum,Filenumber)x
قرار می دهد . ReadData دستور اول کل یک فایل را خوانده و در متغیر
Filenumber بایت از فایلی با شماره Charnum دستور دوم ، تعداد
قرار می دهد . ReadData را خوانده و در متغیر
این دو دستور تمام کاراکترهاي موجود در فایل را می خوانند . براي
استفاده Line Input اینکه بتوان فایل را خط به خط خواند ، از دستور
کنید :
Filenumber,ReadData# Line Input
بیشتر براي خواندن فایلهاي متنی استفاده Line Input البته از دستور
می شود زیرا ممکنست در فایل باینري هیچ کاراکتر انتهاي خط (
وجود نداشته باشد و یکباره کل فایل خوانده شود . ( CRLF
از این دستور براي خواندن فایلهاي باینري با : Get 2 - دستور
استفاده میشود : ( Random Access ) دسترسی تصادفی
Get #Filenumber,[Recordnum%],ReadData
را از فایلی با شماره Recordnum این دستور رکورد شماره
قرار می دهد . علامت ReadData می خواند و در متغیر Filenumber
اختیاري است و در Recordnum کروشه نشان می دهد که پارامتر
صورتیکه ذکر نشود داده ها از رکورد بعدي فایل ( جائیکه اشاره گر فایل
آنجا قرار دارد ) خوانده می شوند .
نوشتن در فایل :
توسط این دستور می توان اطلاعاتی را در فایل قرار : Print 1 - دستور
داد :
Print #FileNumber,WriteData
را در فایلی با شماره WriteData دستور فوق محتویات متغیر
می توان اطلاعات را Print می نویسد . بوسیله دستور FileNumber
بصورت خط به خط در فایل نوشت براي مثال :
Hello Visual Basic"+Vbcrlf",1# Print
در ویژوال ( CRLF ) نشان دهنده کاراکتر انتهاي خط Vbcrlf عبارت
بیسیک می باشد .
این دستور براي نوشتن داده ها در فایلهاي باینري با : Put 2 - دستور
دسترسی تصادفی بکار می رود :
FileNumber,[Recordnum],WriteData# Put
را در رکورد شماره WriteData این دستور محتویات متغیر
قرار می دهد . Recordnum
تعیین محل رکورد در فایلهاي با دسترسی تصادفی :
براي منتقل کردن اشاره گر فایل به یک رکورد در یک فایل باینري با
استفاده می شود . این دستور محل Seek دسترسی اتفاقی ، از دستور
یک بایت را در فایل می گیرد و اشاره گر فایل را در آنجا قرار می دهد
می توانند با این رکورد کار کنند : Get و Put بنابراین دستورات
FileNumber,RecordNumber# Seek
تشخیص انتهاي فایل :
EOF براي اینکه متوجه شویم به انتهاي یک فایل رسیده ایم از دستور
را بر می False یا True استفاده می کنیم . این دستور یکی از مقادیر
گرداند که نشان می دهد به انتهاي فایلرسیده ایم یا نه . از این تابع در
استفاده می شود : Do-While حلقه هاي
EOF(FileNumer))x) Do While Not
.
.
.
Loop
حلقه فوق تا زمانیکه فایل موردنظر به انتها نرسیده باشد اجرا خواهد
شد .
بدست آوردن طول یک فایل :
می توان طول محتویات یک فایل را بدست آورد : LOF بوسیله دستور
FileSize=LOF(FileNumber)x
بدست آوردن محل اشاره گر فایل :
می توان محل جاري اشاره گر فایل را بدست آورد . Loc توسط دستور
اجرا شدن این دستور محل اشاره گر را تغییر نمی دهد :
FilePosition=Loc(FileNumber)x
کار با فایل در ویژوال بیسیک - بخش سوم
سایر عملیات کار با فایل :
استفاده می Kill 1 - حذف فایل : براي حذف یک یا چند فایل از دستور
شود :
Kill "C:\Temp\MyFile.txt"x
C:\Temp\*.txt"x" Kill
2 - انتقال فایل : براي انتقال یک فایل از یک دایرکتوري به دایرکتوري
استفاده می شود . مبدا و مقصد بایستی روي یک Name دیگر از دستور
درایو باشند . اگر دایرکتوري مبدا و مقصد یکی باشد فایل تغییر نام داده
می شود :
C:\Temp\File1.txt" To "C:\Temp2\File2.txt"x" Name
3 - کپی کردن فایل : براي کپی کردن یک فایل از یک دایرکتوري به
استفاده می شود : FileCopy دایرکتوري دیگر از دستور
FileCopy "\File1.txt\ To "C:\Temp\File2.txt"x
4 - بدست آوردن تاریخ و زمان آخرین تغییر فایل و یا زمان ایجاد فایل :
استفاده می شود . ابتدا بایستی FileDateTime براي این کار از دستور
تعریف کرده و سپس توسط این دستور Variant یک متغیر از نوع
تاریخ و زمان موردنظر را استخراج کنیم :
Variant Dim FileInfo As
FileInfo=FileDateTime("C:\Temp\MyFile.txt")x
5 - استخراج طول فایل : براي بدست آوردن طول یک فایل بر حسب بایت
استفاده می شود : FileLen از دستور
FileSize=FileLen("C:\MyFile.txt")x
SetAttr 6 - تغییر صفت یک فایل : براي تغییر صفت یک فایل از دستور
استفاده می شود . پارامترهاي این دستور عبارتند از :
0 : فایل معمولی
2 : فایل مخفی
4 : فایل سیستمی
FileNumber,FileAttrib SetAttr
مقابله با خطاهاي کار با فایل :
در زمان کار با فایلهاي احتمال زیادي وجود دارد که خطا بوجود آید .
بنابراین بایستی در زمان کار با فایلها در صورت ممکن از روتینهاي
مقابله با خطا استفاده کنیم . شایع ترین خطاهاي کار با فایل عبارتند از :
52 : شماره یا نام فایل صحیح نیست
53 : فایل پیدا نشد
54 : حالت فایل صحیح نیست
55 : فایل قبلاً باز شده
58 : فایل از قبل وجود دارد
59 : طول رکورد صحیح نیست
61 : دیسک پر است
62 : عبور از انتهاي فایل
63 : شماره رکورد صحیح نیست
70 : دسترسی ممنوع است
71 : دیسک آماده نیست
76 : مسیر پیدا نشد
استفاده Select-Case در هنگام مقابله با خطا بهتراست از یک ساختار
کنید :
Err Select Case
Case 71
MsgBox "Drive is Not Ready"x
End Select
منبع:
http://sheidaian.persianblog.com[/size]