Определение единого массива с индексами 'a' .. 'z' и '0' .. '9' в Паскале - PullRequest
0 голосов
/ 07 ноября 2019

Я изучаю язык прямо сейчас, поэтому я действительно не силен, когда дело доходит до синтаксиса, и я не смог найти ответ в Интернете.

Я мог бы легко разделить массив на два массива,но когда я попытался определить что-то вроде:

Counts: Array['a'..'z','0'..'9'] of Integer;

я получаю эту ошибку, которую я не могу решить:

Incompatible types: got "ShortInt" expected "Array[48..57] Of SmallInt

Возможно ли определение массива подобным образом? Спасибо.

1 Ответ

1 голос
/ 08 ноября 2019

Декларация

Counts: Array['a'..'z','0'..'9'] of Integer;  

означает Array[97..122] of Array[48..57] of Integer. Это двумерный массив.

Используйте его как:

Counts['a','0'] := 42; 

Если вы намеревались создать одномерный массив с пробелом для индексов, это невозможно.


Ошибка, замеченная компилятором , заключается в том, что доступ к массиву осуществляется так, как будто это одномерный массив, вероятно, что-то вроде этого:

program Hello;
var
  Counts: Array['a'..'z','0'..'9'] of Integer;
begin
  Counts['a'] := 42;//Error: Incompatible types: got "ShortInt" expected "Array[48..57] Of SmallInt"
end.
...