我正在学习QBasic并在文档中找到了用户定义的类型example代码。在这个例子中,在用户定义的类型中有一个字符串元素,并且该字符串没有定义长度。
然而,我的编译器会抛出异常"预期的STRING * on ..."对于这个例子。测试用例定义字符串长度:
TYPE Person
name AS STRING * 4
END TYPE
DIM Matheus AS Person:
Matheus.name = "Matheus":
PRINT Matheus.name:
记录"数学",预期" Matheus"。有没有办法允许这个字符串的任何范围?
注意:我使用的是QB64编译器
答案 0 :(得分:2)
不,即使使用QB64,也无法使用可变长度字符串。如果您需要此功能,可以查看FreeBASIC,因为它提供了它。
TYPE
创建具有指定字段的记录类型,并且记录具有固定长度。查看OPEN ... FOR RANDOM
规范:
OPEN Filename$ FOR RANDOM AS #1 [LEN = recordlength%]
recordlength%
取决于获取LEN
变量的TYPE
或FIELD
声明。- 如果
OPEN
语句中没有使用记录长度,则默认记录大小为128字节,但最后一条记录除外。- 记录长度不能超过32767或发生错误!
TYPE
从未打算包含动态大小的字符串。这允许开发人员保持较小的记录大小。例如,如果您有地址簿,那么您不希望人们的姓名过大,否则地址簿就不适合记忆。
QB64没有消除这种限制,可能是为了保持与旧的QBASIC代码兼容,因为最初的目标是保持兼容性。