记录阵列使用函数读取



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

相关内容

  • 没有找到相关文章

最新更新