'---------------------------------
'write file
dim nhandle as integer, fname as string
fname = "d:\1.txt"
nhandle = freefile
open fname for output as #nhandle
print #nhandle, "0"
print #nhandle, "2"
close nhandle
'----------------------------------
'read file
nhandle = freefile
open fname for input as #nhandle
cnt = 0
do until eof(nhandle)
line input #nhandle, newline
debug.print newline
loop
close nhandle
總結一下vb6的檔案操作,省得要用的時候又到處查詢。
一、檔案型別
1、順序檔案(文字檔案) :以ascii碼形式存放的檔案。似乎還有unicode碼存放的,有沒有bcd碼的呢?
2、隨機訪問檔案:這種檔案格式很有特點:檔案中存放若干條等長的單元(也可以說是記錄);每個單元包含同型別、等數量、等長度的資料項;檔案中,除了字串以ascii碼存放之外, 其它都以二進位制形式直接存放,節省儲存空間。這種檔案型別非常適合儲存需要和軟體互動的資料,如結構體資料、類資料等。這也是vb特有的檔案訪問方式。
3、二進位制檔案:以二進位制形式存放,pe程式檔案一般都是這個型別。
二、操作方法
1、順序檔案
讀: line input #檔案號, 字串變數
讀一行資料存入字串變數,資料報括空格、tab、等,不包括回車符和換行符,所以要顯示檔案的換行效果,要手動新增回車符和換行符(vbcrlf)
input #檔案號, 變數1[, | ;] [變數2]...
這種方式可以存入多個變數,而且變數型別不限於字串型。
寫: print #檔案號, 引數1[, | ;] [引數2]...
將各引數逐個寫入檔案。引數間用逗號隔開時,檔案中相應插入多個空格;用分號隔開時,插入乙個空格。可以用spc(n)、tab(n)等進行排版。
write #檔案號, 引數1[, | ;] [引數2]...
這種寫入方式將自動新增界定符,對不同引數的型別加以界定。
2、隨機訪問檔案
開啟: open 檔名 [for random] as [#]檔案號 len = 記錄長度
for random可以省略,檔案不存在則建立,讀寫都是這種開啟方式。 len是檔案中記錄的一條長度,用以識別記錄的開始與結束,經常用len(記錄名)來獲取長度。
讀: get [#]檔案號, [記錄號], 變數
讀一條記錄存入變數,可以是系統型別的integer、single、string等等,也可以是自定義型別結構體、類等。記錄號省略時從開啟以後最後一次讀取的末端開始讀取記錄。
寫: put [#]檔案號, [記錄號], 表示式
將表示式中的資料寫入檔案,表示式可以是各種變數的組合,中間用逗號隔開。該組資料寫入記錄號對應的位置,記錄號省略時從開啟以後最後一次寫入的末端開始寫入記錄。
3、二進位制檔案
開啟: open 檔名 for binary as [#]檔案號
檔案不存在則建立,讀寫都是這種開啟方式。當然也可以用來開啟文字檔案,讀出來將不知所云
讀一條記錄存入變數,可以是系統型別的integer、single、string等等,也可以是自定義型別結構體、類等。記錄號省略時從開啟以後最後一次讀取的末端開始讀取記錄。
讀: get [#]檔案號, [讀位置], 變數
從「讀位置」開始讀取資料,讀入的長度等於變數的長度,一次讀乙個。「讀位置」以位元組為單位。「讀位置」省略時從開啟以後最後一次寫入的末端開始讀入。
寫: put [#]檔案號, [寫位置], 表示式
將表示式中的資料寫入檔案,表示式可以是各種變數的組合,中間用逗號隔開。該組資料寫入「寫位置」,「寫位置」以位元組為單位。「寫位置」省略時從開啟以後最後一次寫入的末端開始寫入。
三、操作許可權open 檔名 for 模式 [access access] [lock ] as [#]檔案號 [len = 記錄長度]
對隨機儲存檔案和二進位制檔案,可以設定檔案的讀寫許可權。access可寫成read、write、 read write,對應唯讀、只寫、讀寫兼備。此項功能不適用於順序檔案。
lock | unlock 檔案號, [記錄| [起始記錄 to終止記錄]]
當指明lock標識後,可用以上**設定檔案的共享許可權。對順序檔案, [記錄| [起始記錄 to終止記錄]]不起作用,將對整個檔案生效;對隨機儲存檔案,將對記錄標識中的部分進行許可權鎖定或解鎖。
四、檔案操作函式
以上部分可以實現檔案操作的一些功能,但要完成如拷貝整個檔案、查詢檔案是否已建立、取檔案長度等功能,還需要一些檔案操作函式來方便地實現。
seek: seek(檔案號)
返回檔案正在訪問的位置,返回值為長整型。對順序檔案和二進位制檔案,返回值以位元組為單位;對隨機訪問檔案,返回值以記錄號為單位。
seek: seek [#]檔案號,位置
定位檔案到指定位置。位置單位同上所述。
input: input (位元組數,[#]檔案號)
從檔案的訪問當前位置讀入指定位元組數的資料。僅適用於順序檔案和二進位制檔案。
eof: eof(檔案號)
判斷檔案的訪問位置是否在檔案尾,如果是,返回true,否則,返回false。
lof: lof(檔案號)
返回檔案長度,單位為位元組。
filelen: filelen (檔名)
返回檔名對應檔案的長度,單位是位元組。該函式取磁碟檔案標識中的長度,即檔案開啟前的長度,可以取未開啟的檔案長度。
getattr: getattr (pathname)
返回指定檔案或資料夾的屬性。
fileattr: fileattr (檔案號)
返回檔案號對應檔案的開啟方式。
getdatetime: getdatetime (pathname)
返回檔案被建立或修改的最後日期和時間。
free: freefile[(0|1)]
返回未被占用的檔案號,free或free(0)返回1~255之間未占用的檔案號,free(1)返回256~511之間未占用的檔案。
dir: dir (pathname [,attributes])
測試指定路徑是否有某檔案,attributes附加檔案屬性條件,取值vbnormal、vbreadonly、vbhidden、vbsystem、vbvolume、vbdirectory。
kill: kill (檔名)
刪除指定檔案,檔名可包含路徑。
filecopy: filecopy 原始檔,目標檔案
拷貝檔案。
name: name 舊檔名 as 新檔名
檔案重新命名。前後路徑不一致時,操作為移動檔案並重命名。
mkdir: mkdir path
新建資料夾。
rmdir: rmdir path
刪除資料夾。
chdrive: chdrive drive
改變當前驅動器 chdrive "d"
curdir: curdir [(driver)]
返回當前工作路徑,指定driver則返回目標驅動器的當前工作路徑。
五、檔案操作實戰
1、新建文字檔案a.txt,寫入資料,關閉。開啟該檔案,全部讀入到新建檔案b.txt,關閉。
'新建檔案,並寫入資料,關閉
open "a.txt" for output as #1
print #1, "abcdefg"; vbcrlf; "hijk"
close #1
'開啟檔案,並全部寫入新檔案,關閉
open "a.txt" for input as #2
open "b.txt" for output as #3
dim str as string
while (not eof(2))
line input #2, str
print #3, str
wend
close
2、新建隨機儲存檔案a.dat,寫入資料,關閉。開啟該檔案,讀入到新建檔案b.dat,關閉。
'以下**位於module模組
'定義自定義型別結構體
public type struct
elem1 as integer
elem2 as string * 5
end type
'以下**位於窗體模組
'新建檔案,並寫入記錄,關閉
open "a.dat" for random as #1 len = len(st)
put #1, , st
close #1
'開啟檔案,並寫入新檔案,關閉
open "a.dat" for random as #2 len = len(st)
open "b.dat" for random as #3 len = len(st)
dim st2 as struct
get #2, , st2
put #3, , st2
close
3、二進位制檔案操作類似於隨機儲存檔案,不再舉例。
VB6技巧 總結
vb設定多行textbox的位置 由於自動輸入的文字比較多,最後輸入的跑到下面了,想要自動滾動到下面,本來以為 操作滾動條呢,但是沒有方法。於是我巧妙的採用了 顯示列表是設定了乙個多行 的 textbox 顯示列表.selstart len 顯示列表.text 1 顯示列表.sellength 1 ...
VB6 系統列印常識
在一次做列印的時候,對位置的調整老是不得法,後來通過cbm666老師的幫助才解決問題,分享以下他給的幫助。其中pic 為物件,如圖形框picture等 destx,desty 目標影象位置 destwidth,destheight 目標影象尺寸 scrx,scry 原影象的裁剪座標 scrwidth...
vb6中的hook技術
public declare function setwindowshookex lib user32 alias setwindowshookexa byval idhook as long,byval lpfn as long,byval hmod as long,byval dwthreadi...