如何在 QBasic 中的用户定义类型中声明任意范围的字符串元素?

How to declare any-range string element inside an user-defined type in QBasic?

我正在学习 QBasic 并在文档中找到了用户定义类型 example 代码。在此示例中,用户定义类型中有一个字符串元素,但该字符串没有定义长度。

但是我的编译器在这个例子中抛出了异常"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% is determined by getting the LEN of a TYPE variable or a FIELD statement.
  • If no record length is used in the OPEN statement, the default record size is 128 bytes except for the last record.
  • A record length cannot exceed 32767 or an error will occur!

TYPE 从未打算包含动态大小的字符串。这允许开发人员保持较小的记录大小。例如,如果你有一个地址簿,你不会希望人们的名字太大,否则地址簿将无法容纳在内存中。

QB64 没有取消这种限制,可能是为了保持与旧 QBASIC 代码的兼容性,因为最初的目标是保持兼容性。