Списки параметров
В некоторых версиях Pascal, таких как FreePascal или Delphi , списки параметров функций или процедур не могут содержать тип объявления , только тип технические характеристики .
Итак, чтобы указать такой массив в качестве параметра, вы должны сначала объявить его тип перед объявлением функции / процедуры:
type
// Type declarations
Bucket = ...
Detail = ...
TBuckets = array[1..26, 1..1025] of Bucket;
TDetails = array[1..1025] of Detail;
procedure Reg(Index, Gen: Char; FName, SName, LoginName, Passwords, PID: string;
var Lo: TBuckets; var Main: TDetails);
Обратите внимание, что другие Паскали (включая ISO Pascal, если я правильно помню) разрешают эти специальные (на месте) объявления даже в списках параметров. Но, очевидно, ваш диалект Паскаля не так.
Параметры открытого массива
Теперь, если вы видите спецификации параметров, такие как x: array of Integer
или аналогичные, то вы имеете дело с параметрами открытого массива. Это не объявление, и оно не определяет один единственный тип, оно принимает все виды одномерных массивов этого базового типа. Подробнее об этом в моей статье Параметры открытого массива и массив const .
Это объясняет сообщение об ошибке: только of
может следовать за array
в списке параметров, чтобы указать параметр открытого массива.
Для чего это стоит: если вы используете FreePascal или Delphi, то вы должны иметь привычку передавать строки как const, если это возможно: const FName, SName, etc...: string
.