vb put 函数
答案:1 悬赏:0
解决时间 2021-01-23 01:13
- 提问者网友:自食苦果
- 2021-01-22 11:02
vb put 函数
最佳答案
- 二级知识专家网友:白昼之月
- 2021-01-22 11:10
随机文件是以“块”为单位进行读取的,如果a的长度是33个字节,那么这个文件块的长度就是33。
lof(2)是文件的总长度,len(a)是文件块的长度(即33),那么lof(2)/len(a)就是文件块的总数量,再加1就是新文件块的位置了。所以
put #2,lof(2)/len(a)+1,a
的意思就是在文件后面添加新的文件块a
追问:谢谢你的回答,可是我运行后总显示“记录长度错误”,指示的是put函数所在语句行,但是把len=len(a)删除就可以了,但是运行后,打开filename文件,里面全乱码,请问啥原因
追答:a中如果含有汉字就会造成这种错误,这是因为VB是采用Unicode编码的,在这种编码格式下,每个字符(不管是字母、数字、符号还是汉字等)都是占用两个字节的,比如"a12百度",按通常理解,这个字符串的长度是7个字节,但在VB中,它却是占用10个字节的!因此,当字符串中含有汉字时,用len函数来获取字符串的长度就是不准确的,应该用一个固定值来决定文件块的长度,而且要比预计值大一倍,比如:
Open FileName For Random As #2 Len = 66
Put #2, LOF(2) / 66 + 1, a
Close #2要注意的是,这种情况下储存的文件中会含有很多ASCII码为0的字符,直接用记事本打开的话可能会出现乱码。随机文件适合用来作为简单的数据库文件(因为它是按固定长度的数据块来储存数据的,因此要想从中取出某个数据块就很方便),如果你的目的不是这个,请改用顺序文件。
lof(2)是文件的总长度,len(a)是文件块的长度(即33),那么lof(2)/len(a)就是文件块的总数量,再加1就是新文件块的位置了。所以
put #2,lof(2)/len(a)+1,a
的意思就是在文件后面添加新的文件块a
追问:谢谢你的回答,可是我运行后总显示“记录长度错误”,指示的是put函数所在语句行,但是把len=len(a)删除就可以了,但是运行后,打开filename文件,里面全乱码,请问啥原因
追答:a中如果含有汉字就会造成这种错误,这是因为VB是采用Unicode编码的,在这种编码格式下,每个字符(不管是字母、数字、符号还是汉字等)都是占用两个字节的,比如"a12百度",按通常理解,这个字符串的长度是7个字节,但在VB中,它却是占用10个字节的!因此,当字符串中含有汉字时,用len函数来获取字符串的长度就是不准确的,应该用一个固定值来决定文件块的长度,而且要比预计值大一倍,比如:
Open FileName For Random As #2 Len = 66
Put #2, LOF(2) / 66 + 1, a
Close #2要注意的是,这种情况下储存的文件中会含有很多ASCII码为0的字符,直接用记事本打开的话可能会出现乱码。随机文件适合用来作为简单的数据库文件(因为它是按固定长度的数据块来储存数据的,因此要想从中取出某个数据块就很方便),如果你的目的不是这个,请改用顺序文件。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯