我在使用我的ReadAllCars函数读取记录数组时遇到问题。我如何将所有3个汽车记录输入读取到汽车阵列中?:
type
Car = record
id: String;
manufacturer: String;
model: String;
reg: String;
end;
var
Cars: array[0..2] of Car;
function ReadString(prompt: String): String;
begin
Write(prompt);
ReadLn(result);
end;
function ReadCar(prompt: String): Car)
begin
WriteLn(prompt);
result.id := ReadString('Please enter the car id: ');
result.manufacturer := ReadString('Please enter the manufacturer: ');
result.model := ReadString('Please enter the car model: ');
result.reg := ReadString('Please enter the car registration: ');
end;
function ReadAllCars(count: Integer): Cars;
var
i: Integer;
begin
for i := 0 to count-1 do
begin
ReadCar('Please enter the car details');
end;
end;
procedure Main();
var
Cars: array[0..2] of Car;
begin
Cars := ReadAllCars(3);
end;
我遇到类型标识符的错误
我可以首先建议您开始使用命名类型声明作为t 名称的常见实践。F.Ex.宣布汽车的类型名为TCar
。然后,可以调用TCar
的实例, Car
。现在,您会立即看到一种是一种类型,另一种是实例。
您收到错误消息"预期类型标识符"的实际问题是,您正在使用变量声明,就好像是类型一样,即
var
Cars: array[0..2] of Car;
您将其作为结果 type 用于ReadAllCars()
,这是错误。相反,您需要声明类型TCars
type
TCars: array[0..2] of TCar;
在Car
的现有类型声明之后立即将此类型声明放置,我希望您将其重命名为TCar
。
因此,TCars
将是函数ReadAllCars()
最后,要更改容纳所有汽车的变量,您将写
var
Cars: TCars;