我在使用ReadAllCars函数读取记录数组时遇到问题。如何将Car记录的所有3个输入读入Cars数组?:
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;
我收到预期类型标识符的错误
答案 0 :(得分:0)
我首先建议您开始使用将类型声明命名为T +名称的常见做法。 F.ex.声明汽车的类型名为TCar
。然后,可以调用TCar
的实例,Car
。现在你会立即看到一个是一个类型而另一个是一个实例。
您收到错误消息的实际问题"预期类型标识符"是你正在使用变量声明,就好像它是一个类型,即
var
Cars: array[0..2] of Car;
您对ReadAllCars()
使用此结果类型,这就是错误。相反,您需要声明类型TCars
type
TCars: array[0..2] of TCar;
在Car
的现有类型声明之后立即放置此类型声明,我希望您将其重命名为TCar
。
因此,TCars
将是函数ReadAllCars()
最后,要更改包含所有汽车的变量,您需要编写
var
Cars: TCars;