如何在 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 代码的兼容性,因为最初的目标是保持兼容性。
我正在学习 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 theLEN
of aTYPE
variable or aFIELD
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 代码的兼容性,因为最初的目标是保持兼容性。