我正在学习QBasic,并在文档中找到了一个用户定义类型的示例代码。在本例中,用户定义类型中有一个string元素,该字符串没有定义长度。
然而,我的编译器抛出异常"Expected STRING * on…"对于这个例子。测试用例定义字符串长度:
TYPE Person
name AS STRING * 4
END TYPE
DIM Matheus AS Person:
Matheus.name = "Matheus":
PRINT Matheus.name:
它记录"Math",期望"Matheus"。有没有一种方法允许这个字符串有任何范围?
注意:我使用QB64编译器
不,没有办法使用变长字符串,即使是QB64。如果你想要这个功能,你可以看看FreeBASIC,因为它提供了这个功能。
TYPE
创建具有指定字段的记录类型,并且记录具有固定长度。查看OPEN ... FOR RANDOM
规范:
OPEN Filename$ FOR RANDOM AS #1 [LEN = recordlength%]
recordlength%
通过获取TYPE
变量或FIELD
语句的LEN
来确定。- 如果
OPEN
语句中没有指定记录长度,则除最后一条记录外,默认记录长度为128字节。- 记录长度不能超过32767,否则会出现错误!
TYPE
从未打算包含动态大小的字符串。这允许开发人员保持较小的记录大小。例如,如果你有一个地址簿,你不会希望人们的名字太大,否则地址簿将无法容纳内存。
QB64并没有删除这个限制,可能是为了保持与旧的QBASIC代码的兼容性,因为最初的目标是保持兼容性。