首页 > 解决方案 > 在 QBasic 中使用用户定义的 TYPE 中的数组

问题描述

我正在尝试学习 QBasic 在 Amstrad Alt-286 上编程。在我的一个程序中,我使用了几种用户定义的类型,有时是 TYPE 数组。在其中一些中,我想声明一个这样的数组:

TYPE TestType
    dataArray AS STRING * 4 'Since "dataArray AS _BYTE * 4" doesn't work (wrong syntax compiler says).
END TYPE

然后我像这样声明我的类型:

DIM customType(2) AS TestType

只要我想像这样在我的类型的 dataArray 中写入:

customType(1).dataArray(2) = 3

编译器告诉我这是一个无效的语法。

那么,如何在定义的TYPE中存储一个数组呢?以及如何使用它?

标签: arraysqbasic

解决方案


这里有两个问题。在 QB64 中,您根本无法将数组放入用户定义的类型中。根据 QB64 Wiki关于 TYPE 定义的文章

TYPE 定义不能包含数组变量!数组可以维度化为 TYPE 定义。

除此之外,您的 dataArray (已声明dataArray AS STRING * 4)根本没有声明数组,而是声明了一个 4 个字符的字符串。这就是为什么当您尝试使用数组语法访问 dataArray 的元素时会出现语法错误的原因。您可以声明一个由自定义类型组成的数组,如下所示:

TYPE TestType
    dataElement AS _BYTE
END TYPE

DIM CustomType(4) AS TestType

CustomType(1).dataElement = 3

这声明了一个 TYPE TestType 的 4 元素数组,每个元素包含一个 TYPE _BYTE 变量。这大约是您可以达到的目标。祝你好运!


推荐阅读