【VB】如何将文件读入自定义数组中? 一个数组有多个不同类型的元素变量。如下: type stu

【VB】如何将文件读入自定义数组中?

一个数组有多个不同类型的元素变量。如下:
type studtype
name as string*5
sex as string*1
age as integer
...
end type
dim stud() as studtype

文件是将不同变量值用“,”分开,不同的数组值在不同行。如下:
×××,男,20
×××,女,19
...

我写的是
open "D:\学生.txt" for random as #1
for i =1 to 6
get #1,1,stud(i)
next i
close #1
提示我,变量使用了一个VB不支持的自动化类型
怎么弄呀!

get #1,1,stud(i)这样不行的。

你应该把 ×××,男,20 分别提取出来分别赋值。

stud(i).name=xxx

stud(i).sex="男"

stud(i).age=20

按你的代码写的,只给你修改stud(i),前提是你其他代码正确:
 get #1,1,abc 
 zz=split(abc,",")
 stud(i).name=zz(0) 
 stud(i).sex=zz(1) 
stud(i).age=val(zz(2))追问

按你说的改了,还是提示我变量使用了一个不支持的自动化类型,是不是和我使用的是精简版有关

读取随机文件不需要用split()吧

追答

split 不是随机,是分割你读出来的数据。

你读出来的格式×××,男,20,split(abc,",")就是以,分割成数组,然后再次赋值。

至于其他错误,需要你提供完整代码才能知道具体哪里的问题。

追问

用split前面不应该用line input #1,abc么?

追答

给你理一下思路吧:

1、line input #1,abc,是把txt读取出来的数据赋值给abc,你是直接赋值给stud(i),stud(i)不能这么赋值,具体看下面。

2、读取出来的abc的格式是什么?是这样的:×××,男,20

3、如何才能提取出里面的姓名xxx,性别男,年龄20呢?这就需要用到split分割函数。

   zz= split(abc,",") 就是以逗号分割abc,分割成3块,

    stud(i).name=zz(0) 'zz(0)是分割出来的第一块,就是xxx姓名

     stud(i).sex=zz(1) 'zz(1)第二块性别

    stud(i).age=val(zz(2))'zz(2)第三块年龄,val是提取数字,因为年龄是数字,所有用了个val

4、上面解释完了。你的数组定义也有问题的。

for i =1 to 6

    redim preserve stud(i) '======新增代码,重新定义一下数组

    zz=split(abc,",")

     stud(i).name=zz(0) 

     stud(i).sex=zz(1) 

    stud(i).age=val(zz(2))

 next i

5、再有其他问题,需要你贴出你的全部代码才能知道是什么问题

温馨提示:答案为网友推荐,仅供参考