آموزش vb

اموزش نرم افزار برنامه نویسی ویژوال بیسیک

آموزش vb

اموزش نرم افزار برنامه نویسی ویژوال بیسیک

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

کار با فایل در ویژوال بیسیک - بخش اول 
مقدمه 
 
بعلت عدم وجود اشاره گر در ویژوال بیسیک عملیات کار با فایلها در آن نسبتاً ساده می باشد .
بطور کلی فایلها بر دو نوع هستند :
1 - فایلهای متنی Text File : این فایلها فقط شامل کاراکترهای اسکی و برخی کاراکترهای خاص مانند انتهای خط و انتهای فایل هستند .
۲ - فایلهای باینری Binary File : شامل هر نوع کاراکتری می توانند باشند و کاربردهای گسترده ای دارند مانند بانک های اطلاعاتی ، فایلهای اجرائی ، فایلهای گرافیکی و غیره
ویژوال بیسیک می تواند با هر دو نوع فایل کار کند .

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


قبل از اینکه بتوان عملیات ورودی/خروجی را روی یک فایل انجام داد ابتدا بایستی آنرا باز کرد . باز کردن فایلها در ویژوال بیسیک توسط دستور 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 عددی است که ویژوال بیسیک از آن برای دسترسی به فایل استفاده می کند .این عدد بایستی برای هر فایل منحصر بفرد و بین ۱ تا ۵۱۱ باشد . برای بدست آوردن اولین شماره آزاد می توان از تابع FreeFile استفاده کرد .
reclen :طول بافر فایل است . این عدد بایستی از ۳۲۷۶۷ کو چکتر باشد .

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


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

Close #filenumber

دستور Close بدون هیچ پارامتری تمام فایلهای باز را می بندد .
کار با دایرکتوری
۱ - گرفتن Dir : توسط دستور Dir می توان نام فایلهای موجود در یک دایرکتوری را بر اساس پارامترهایی که به آن می دهیم پیدا کنیم . برای مثال :
Myfile=Dir$("c:\text\*.txt)"x

دستور فوق نام اولین فایل موجود در دایرکتوری C:\TEXT را که پسوند آنها txt باشد در متغیر Myfile قرار می دهد . اگر دستور فوق را بدون پارامتر مجدداً اجرا کنیم نام دومین فایل برگرداننده می شد و الی آخر
Dir دارای یک پارامتر اختیاری است که نوع فایلهای مورد نظر را نیز می توان با آن مشخص نمود . مثال :
Myfile=Dir$("c:\text\*.txt",vbNormal)x

مقادیر ممکن این پارامتر عبارتند از :
vbNormal ، vbHidden ، vbSystem ، vbDirectory
۲ - تغییر دایرکتوری : برای تغییر دایرکتوری از دستور ChDir استفاده می شود مثال :
ChDir "c:\windows\system32"x

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

۴ - ساخت دایرکتوری : برای ایجاد دایرکتوری جدید از دستور MKDir استفاده می شود مثال :
MKDir "c:\MyFolder"x

۵ - حذف دایرکتوری : برای حذف دایرکتوری از دستور RmDir استفاده می شود مثال :
RmDir "C:\MyFoler"x  
 
 

 
 
کار با فایل در ویژوال بیسیک - بخش دوم

خواندن از فایل :
1 - دستور Input : توسط دستورهای Input و Line Input می توان محتوای فایلهای متنی و باینری را خواند .
دستور Input به دو صورت بکار می رود :
Input #Filenumber,ReadData
ReadData=Input(Charnum,Filenumber)x
دستور اول کل یک فایل را خوانده و در متغیر 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))x
.
.
.
Loop
حلقه فوق تا زمانیکه فایل موردنظر به انتها نرسیده باشد اجرا خواهد شد .

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

بوسیله دستور LOF می توان طول محتویات یک فایل را بدست آورد :
FileSize=LOF(FileNumber)x

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

توسط دستور Loc می توان محل جاری اشاره گر فایل را بدست آورد . اجرا شدن این دستور محل اشاره گر را تغییر نمی دهد :
FilePosition=Loc(FileNumber)x  
 

 
 
کار با فایل در ویژوال بیسیک - بخش سوم 
 

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


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

Kill "C:\Temp\MyFile.txt"x
Kill "C:\Temp\*.txt"x

۲ - انتقال فایل : برای انتقال یک فایل از یک دایرکتوری به دایرکتوری دیگر از دستور Name استفاده می شود . مبدا و مقصد بایستی روی یک درایو باشند . اگر دایرکتوری مبدا و مقصد یکی باشد فایل تغییر نام داده می شود :
Name "C:\Temp\File1.txt" To "C:\Temp2\File2.txt"x

۳ - کپی کردن فایل : برای کپی کردن یک فایل از یک دایرکتوری به دایرکتوری دیگر از دستور FileCopy استفاده می شود :
FileCopy "\File1.txt\ To "C:\Temp\File2.txt"x

۴ - بدست آوردن تاریخ و زمان آخرین تغییر فایل و یا زمان ایجاد فایل : برای این کار از دستور FileDateTime استفاده می شود . ابتدا بایستی یک متغیر از نوع Variant تعریف کرده و سپس توسط این دستور تاریخ و زمان موردنظر را استخراج کنیم :
Dim FileInfo As Variant
FileInfo=FileDateTime("C:\Temp\MyFile.txt")x

۵ - استخراج طول فایل : برای بدست آوردن طول یک فایل بر حسب بایت از دستور FileLen استفاده می شود :
FileSize=FileLen("C:\MyFile.txt")x

۶ - تغییر صفت یک فایل : برای تغییر صفت یک فایل از دستور SetAttr استفاده می شود . پارامترهای این دستور عبارتند از :
0 : فایل معمولی
2 : فایل مخفی
4 : فایل سیستمی
SetAttr FileNumber,FileAttrib

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

۵۲ : شماره یا نام فایل صحیح نیست
۵۳ : فایل پیدا نشد
۵۴ : حالت فایل صحیح نیست
۵۵ : فایل قبلاً باز شده
۵۸ : فایل از قبل وجود دارد
۵۹ : طول رکورد صحیح نیست
۶۱ : دیسک پر است
۶۲ : عبور از انتهای فایل
۶۳ : شماره رکورد صحیح نیست
۷۰ : دسترسی ممنوع است
۷۱ : دیسک آماده نیست
۷۶ : مسیر پیدا نشد

در هنگام مقابله با خطا بهتراست از یک ساختار Select-Case استفاده کنید :
Select Case Err
Case 71
MsgBox "Drive is Not Ready"x
.
.
.
End Select
نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد