【发布时间】:2011-11-05 15:02:14
【问题描述】:
当我编译以下代码时,我得到了错误。我不明白其中一些。
代码
program Lasagna;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils
{ you can add units after this };
{$R *.res}
type
TVehicle = record
kindOfVehicle : String[30];
numberOfWheels : Integer;
horsePower : Real;
end;
var
F: file of TVehicle;
Vehicle : Array [1..3] of TVehicle;
index : Integer;
begin
writeln('A RECORD OF DIFFERENT KIND OF VEHICLES.');
writeln('---------------------------------------');
writeln;
AssignFile(F,'C:/Users/W/Desktop/CarRecord.dat');
writeln('Searching for file.');
if FileExists('C:/Users/W/Desktop/CarRecord.dat') then
begin
writeln('File found. Opening file.');
Rewrite(F);
writeln('File ready.');
writeln;
writeln;
for index:=0 to 3 do
begin
writeln('Enter the following details for vehicle no. ',index);
write('Kind of Vehicle: ');
readln(Vehicle[index].kindOfVehicle);
write(F,Vehicle[index].kindOfVehicle);//line 45: this is a string so why do I get an error?**
{Do NOT use writeln() when writing to random access files.}
write('Number of Wheels: ');
readln(Vehicle[index].numberOfWheels);
write(F,IntToStr(Vehicle[index].numberOfWheels));//line 51: The int is converted to string, so i shouldn't get an error?
write('Horse Power of Vehicle: ');
readln(Vehicle[index].horsePower);
write(F, RealToStr(Vehicle[index].horsePower));//line 55:
end;
writeln('Done. Closing File.');
CloseFile(F);
end
else
Rewrite(F);
CloseFile(F);
writeln('File Not Found.');
Writeln('Press ANY key to close the program.');
Readln;
end.
错误
编译 Lasagna.lpr
Lasagna.lpr(45,49) 错误:不兼容的类型:得到“ShortString” 预期为“TVehicle”
Lasagna.lpr(51,60) 错误:不兼容的类型:得到“AnsiString” 预期为“TVehicle”
Lasagna.lpr(55,59) 错误:不兼容的类型:得到“AnsiString” 预期为“TVehicle”
Lasagna.lpr(70) 致命:编译模块时出现 3 个错误,正在停止
【问题讨论】:
标签: type-conversion freepascal