کار با فايلها در VB با استفاده از توابع API

کار با فايلها در VB با استفاده از توابع API

براي خواندن فايلها در VB، از دستور Open استفاده مي کرديم. اما در مورد فايلهاي باينري، اين دستور با مشکلاتي مواجه بود.

اکنون با استفاده از توابع API مخصوص خواندن فايل، مي توانيم فايلها را راحتتر بخوانيم.

توابعي که مي خواهيم از آنها استفاده کنيم به شرح زير هستند:

_lopen

_lread

_lcreat

_lwrite

_lclose

که از اسمشان معلوم است که چه کاري انجام مي دهند.

ابتدا بايد آنها را Declare کنيم:

Public Declare Function lread Lib "kernel32" Alias "_lread" (ByVal hFile As Long, lpBuffer As Any, ByVal wBytes As Long) As Long

Public Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long

Public Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long

Public Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As Long

Public Declare Function lwrite Lib "kernel32" Alias "_lwrite" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal wBytes As Long) As Long

Public Declare Function llseek Lib "kernel32" Alias "_llseek" (ByVal hFile As Long, ByVal lOffset As Long, ByVal iOrigin As Long) As Long

Public Const OF_READ = &H0

Public Const OF_WRITE = &H1

Public Const OF_READWRITE = &H2

نکته اي که در اينجا مطرح است اين است که چون اين توابع با Underline شروع مي شوند، در VB بايد يک اسم جديد به آنها داد. (Alias) که ما در اينجا تابع _lopen را با نام lopen مي شناسيم.

 

حال نحوه ي استفاده از اين توابع.

اگر بخواهيم از فايلي بخوانيم يا در فايلي بنويسيم، بايد ابتدا آن را باز کنيم. بدين صورت:

Dim hFile As Long

hFile = lopen(Filename  , OpenMode)

که به جاي Filename، فايلي که مي خواهيم آن را باز کنيم مي نويسيم و به جاي OpenMode يکي از مقادير زير:

OF_READ

OF_WRITE

OF_READWRITE

را مي گذاريم که عملکرد آنها نيز مشخص است:

مثال:

Dim Filename As String

Dim hFile As Long

Filename = "C:\Autoexec.bat"

hFile = lopen(Filename , OF_READ)

در اينجا ما فايل C:\Autoexec.bat را در حالت خواندن باز کرديم.

براي دسترسي به اين فايل که باز کرديم، بايد از Handle (دستگيره) ي فايل استفاده کنيم. که در اينجا پس از فراخواني lopen، دستگيره ي فايل داخل متغير hFile قرار مي گيرد.

حال که فايل را باز کرديم، بايد از آن بخوانيم:

Dim Numread As Long

Dim Buffer As String * 1024

Numread = lread(hFile , Buffer , Len(Buffer))

در اينجا 1024 بايت از فايل خوانده شده و در داخل متغير Buffer قرار مي گيرد.

تابع _lread بدين صورت است که ما تعيين مي کنيم که چه مقدار مي خواهيم بخوانيم و همچنين حافظه اي که مي خواهيم اطلاعات خوانده شده در آن قرار گيرد را مشخص مي کنيم. و بعد از احضار تابع _lread، مقدار واقعي خوانده شده از فايل، داخل متغير Numread قرار مي گيرد.

اين در موقعي اتفاق مي افتد که به پايان فايل رسيده باشيم. به عنوان مثال 800 بايت از فايل باقي مانده در حالي که ما گفته ايم که مي خواهيم 1024 بايت بخوانيم. در اينجا متغير Numread برابر 800 خواهد شد.

 

 

  
نویسنده : محمد ; ساعت ٥:۱٩ ‎ب.ظ روز سه‌شنبه ۱٦ دی ،۱۳۸٢