在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中呢?如何使用它?

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

TYPE定义不能包含数组变量!数组可以作为TYPE定义进行DIMension。

除此之外,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变量。这几乎是你所能做的。祝你好运!

您想要的代码如下:

虽然你不能在QB1.1、QB4.5或QB64中这样做,但你可以在被称为QB7.1(BC7/PDS(和VBDOS(v1.00(的BASIC方言超集中这样做:

TYPE testtype
dataArray(4) AS INTEGER
END TYPE
DIM customtype(10) AS testtype
customtype(1).dataArray(2) = 3

否则,您可以压缩变量如下:

TYPE testtype
dataArray AS STRING * 8
END TYPE
DIM customtype(10) AS testtype
A = 10: B = 12: C = 14: D = 16
' compress variables into structure
element1$ = MKI$(A) + MKI$(B) + MKI$(C) + MKI$(D)
customtype(1).dataArray = element1$ ' store
' extract variables from structure
element2$ = customtype(1).dataArray ' get
E = CVI(MID$(element2$, 1, 2))
F = CVI(MID$(element2$, 3, 2))
G = CVI(MID$(element2$, 5, 2))
H = CVI(MID$(element2$, 7, 2))
PRINT E, F, G, H

相关内容

  • 没有找到相关文章

最新更新