0

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

但是,对于这个示例,我的编译器会抛出异常“Expected STRING * on...”。定义字符串长度的测试用例:

TYPE Person
    name AS STRING * 4
END TYPE

DIM Matheus AS Person:
Matheus.name = "Matheus":

PRINT Matheus.name:

它记录“数学”,预期为“马修斯”。有没有办法允许这个字符串的任何范围?

注意:我使用的是 QB64 编译器

4

1 回答 1

2

不,没有办法使用可变长度字符串,即使使用 QB64。如果你想要这个特性,你可以研究一下 FreeBASIC,因为它提供了它。

TYPE创建具有指定字段的记录类型,并且记录具有固定长度。看OPEN ... FOR RANDOM规格:

OPEN Filename$ FOR RANDOM AS #1 [LEN = recordlength%]
  • recordlength%通过获取变量或语句LEN的来确定。TYPEFIELD
  • 如果语句中没有使用记录长度OPEN,则默认记录大小为 128 字节,最后一条记录除外。
  • 记录长度不能超过32767,否则会出错!

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

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

于 2016-11-03T06:25:55.720 回答