آموزش جامع کار با فایل ها در ویژوال بیسیک
بعلت عدم وجود اشاره گر در ویژوال بیسیک عملیات کار با فایلها در آن نسبتاً ساده می باشد .بطور کلی فایلها بر دو نوع هستند :۱ – فایلهای متنی 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——–
خواندن از فایل :۱ – دستور 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 استفاده می شود . پارامترهای این دستور عبارتند از :۰ : فایل معمولی ۲ : فایل مخفی ۴ : فایل سیستمیSetAttr FileNumber,FileAttrib
مقابله با خطاهای کار با فایل :در زمان کار با فایلهای احتمال زیادی وجود دارد که خطا بوجود آید . بنابراین بایستی در زمان کار با فایلها در صورت ممکن از روتینهای مقابله با خطا استفاده کنیم . شایع ترین خطاهای کار با فایل عبارتند از :۵۲ : شماره یا نام فایل صحیح نیست ۵۳ : فایل پیدا نشد ۵۴ : حالت فایل صحیح نیست ۵۵ : فایل قبلاً باز شده ۵۸ : فایل از قبل وجود دارد ۵۹ : طول رکورد صحیح نیست ۶۱ : دیسک پر است ۶۲ : عبور از انتهای فایل ۶۳ : شماره رکورد صحیح نیست ۷۰ : دسترسی ممنوع است ۷۱ : دیسک آماده نیست ۷۶ : مسیر پیدا نشد در هنگام مقابله با خطا بهتراست از یک ساختار Select-Case استفاده کنید :Select Case Err Case 71 MsgBox “Drive is Not Ready”x . . . End Select
منبع :http://silverlearn.ir
برچسبها: برنامه نویسی, ویژوال بیسیک, فایلها در ویژوال بیسیک
.: Weblog Themes By Pichak :.


