要使用函数读取的记录数组

时间:2017-04-27 13:43:26

标签: arrays function main record pascal

我在使用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;

我收到预期类型标识符的错误

1 个答案:

答案 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;