VB隨機檔案記錄長度錯誤

時間 2025-03-09 11:30:26

1樓:網友

不知道你是怎麼寫的,但是我用你的寫的,改了下是可以用的。

視窗:form1 模組:module1

模組裡:public type a_typea(10) as integer

b(10) as integer

end type

public a as a_type

窗體裡:我加了個text1用來輸入想儲存的檔案內容,commond1用來確定儲存檔案內容)

private sub command1_click()dim record as integeropen "" for random as #1 len = len(a)

record = lof(1) /len(a) +1put #1, record,close #

end sub

儲存下工程,執行下選擇記事本開啟那個資料夾下的就可以看見你在text1中寫的檔案內容了。

2樓:網友

按上面,程式執行是沒有問題,但是原問本來是用隨機檔案、按記錄的方式存取檔案,如果改變了原目的,那能執行也沒用啊。

原來要示是陣列格式儲存,結果改成了存字串。這不合適。

3樓:網海1書生

len(a)得到的是a的字元數(6),而實際上這裡要的是a的位元組數,即lenb(a),也就是12。此外,還要加上兩個位元組用來存放記錄的實際長度,所以要這樣才對:

open "" for random as #1 len = lenb(a) +2

其次,vb生成的隨機檔案並不是純文字檔案(準確的說隨機檔案更像是乙個資料庫檔案),裡面包含了一些二進位資料(比如上面說的記錄長度),所以是不適合用記事本直接開啟的(否則就會出現箭頭之類的奇怪字元)。

最後補充說一句:隨機檔案的len用於設定每條記錄的長度,必須是個固定值,而且一經設定就不能再更改。當然,存入的資料長度可以小於這個值,剩餘的部分vb會自動用ascii值0進行填充。

再再再補充一句:隨機檔案是以「資料塊」為單位來讀寫資料的,每塊資料有固定的長度,這樣如果想從中獲得某個資料塊,只要把資料塊的記錄號乘以長度,即可獲得這個資料塊在檔案中的位置,從而直接把它提取出來,這就是「隨機」二字的意思。所以隨機檔案主要用於儲存資料。

而如果你的目的是那種以行為單位,每行長度不固定,可以用記事本直接開啟來看的檔案(即俗稱的文字檔案),則不適合用隨機檔案,必須用順序檔案。這種檔案是不能夠直接從中提取出某行資料的,必須一行接一行順序讀取(或者寫入),這就是「順序」二字的意思。

用VB隨機生成13位小寫字母,在VB中,隨機生成小寫字母的程式碼要怎麼寫

莊醉卉 小寫字母對應的ascii值是 97 122dim i as integer dim outstr as string outstr for i 1 to 13 outstr outstr chr int 26 rnd 1 97 next i text1.text outstr outstr ...

VB隨機數問題

做2個陣列,rndmon 11 放12個月份,rndday 30 放31天,窗體上放個按鈕,把我 複製過去執行下 private sub command1 click 定義dim rndmon 11 as integerdim rndday 30 as integerdim i as integer...

VB標籤裡隨機產生數

private sub cmdrnd click labrnd.caption int rnd 100000 100 mod 100000 end sub labrnd 那個標籤 cmdrnd 那個命令按鈕 dim i as integer const n 5 dim x n as integer ...