我正在编写一个用于记录显微镜使用情况的应用程序,但下面的一段代码会产生错误E2010不兼容的类型“WideString”和“TDataFile”,其行如下:SetLength(Items,FileSize(F));我有将问题缩小到FileSize(F),只是一个数字而不是错误并尝试分配i:= fileSize(F);其中i是一个整数给出相同的错误。
type
TData = record
Status : integer; // 0=operational 1=maintenance 2=fault
OperatorName : string[255];
Client : string[255];
Specimen : string[255];
Memo : string[255];
TEM : TTEM;
SEM : TSEM;
FIB : TFIB;
StartTime : string[22]; // YYYY/MM/DD HH:MM:SS AM
FinishTime : string[22];
DataFileName : string[255];
end;
TDataFile = File of TData;
TDataArray = array of TData
function LoadAllData(FileName: string; var Items: TDataArray):boolean;
// Loads contents of Datafile into Items and returns true if successful else false
var
F : TDataFile;
i : integer;
begin
AssignFile(F, FileName);
try
try
Reset(F);
SetLength(Items, FileSize(F)); // This is the problem line
for i := 0 to High(Items) do
Read(F, Items[i]);
LoadAllData := true;
except
LoadAllData := false;
end;
finally
CloseFile(F);
end;
end;
我在Win7 64bit上使用delphi 2010。有谁知道为什么会这样?编写一个小型控制台应用程序只是为了测试i:= FileSize(F);工作没有问题......
答案 0 :(得分:5)
您似乎在其他单元或代码的一部分中声明了一个名为FileSize
的函数,类似
function FileSize(const f : WideString):integer;
begin
//
end;
要解决此问题,请在函数名称前添加函数的单元名称(在本例中为System
),以显式调用FileSize
函数。
SetLength(Items, System.FileSize(F));