好吧,所以我正在编写一个程序,旨在将7位输入与已知的7位数输入进行比较,并找出它们之间的距离。一切都编译得很好,除了我收到一个错误,指出“索引组件中需要的数组类型”
pickbit1:
FOR X IN 1 .. 7 LOOP
pickdigit1:
FOR Y IN 0 .. 9 LOOP
IF a1(X) /= Compare(Y)(X) THEN
d1(X)(Y) := d1(X)(Y) + 1;
END IF;
END LOOP pickdigit1;
END LOOP Pickbit1;
错误发生在创建第二个for循环的行。我不知道为什么会有一个错误引用那里的数组的索引。 这是我的数组类型。
subtype segment is Character range '0' .. '1';
subtype distance is Integer;
subtype c is Character range ' ' .. ' ';
type Segment_Array is array(1 .. 7) of segment;
type Digit_Array is array(1 .. 7) of Character range '0' .. '1';
type Compare_Array IS array(0 .. 9) of Digit_Array;
type Distance_Array IS array(0 .. 9) of distance;
type Total_Array IS array(0 .. 9, 0 .. 9) of Integer;
a1 a Segment_Array,d1是Distance_Array,Compare是Compare_Array
答案 0 :(得分:2)
如果d1
是Distance_Array
,则d1(X)
会返回distance
(Integer
的子类型)。 Integer
(或distance
)不是数组类型,无法进一步编入索引,因此编译器在您尝试执行d1(X)(Y)
时会抱怨。
我不知道为什么编译器抱怨创建循环的行,它应该抱怨该行:
d1(X)(Y) := d1(X)(Y) + 1;