Delphi 错误:“IntToStr”没有重载的句号
编译以下代码时:Delphi 错误:“IntToStr”没有重载的句号,delphi,delphi-7,Delphi,Delphi 7,编译以下代码时: procedure TMainWin.FormActivate(Sender: TObject); var LineRaw : String; LinesFile : TextFile; i, i2 : integer; tempChar : String; CurTempCharPos : integer; begin AssignFile(LinesFile, 'Lines.txt'); Reset(LinesFile); i := 0;
procedure TMainWin.FormActivate(Sender: TObject);
var LineRaw : String;
LinesFile : TextFile;
i, i2 : integer;
tempChar : String;
CurTempCharPos : integer;
begin
AssignFile(LinesFile, 'Lines.txt');
Reset(LinesFile);
i := 0;
tempChar := '';
CurTempCharPos := 1;
while not EoF(LinesFile) do begin
i := i+1; //ticker
ReadLn(LinesFile, LineRaw);
for i2 := 0 to 4 do begin
tempChar := LineRaw[CurTempCharPos] + LineRaw[CurTempCharPos +1];
Lines[i,i2] := IntToStr(tempChar);
tempChar := '';
CurTempCharPos := CurTempCharPos + 3;
end;
end;
CloseFile(LinesFile);
end;
对于以另一种形式定义的行:
unit uGlobal;
interface
type
aLines = array[1..5] of integer;
aLinesFinal = array of aLines;
var
Lines : aLinesFinal;
implementation
end.
我得到以下错误:没有可以用这些参数调用的重载版本的“IntToStr”。错误指向以下行:
Lines[i,i2] := IntToStr(tempChar);
以下是tempChar的声明: 它是一根绳子。以下是编译器拒绝的调用:
Lines[i,i2] := IntToStr(tempChar);
IntToStr函数具有各种重载,它接受整数输入参数并返回字符串。不能将字符串传递给IntToStr。也许你想写:
Lines[i,i2] := StrToInt(tempChar);
其他一些评论:
我看起来不像是你写的。这意味着虽然代码可能会编译,但在运行时会失败。
由于您将aLines声明为整数数组[1..5],因此i2的有效值为1到5(包括1到5)。使用0到4(包括0到4)。同样,这将在运行时产生影响。
您确实应该作为紧急事项启用范围检查,因为当您开始执行此代码时,该设置将显示上述错误,而且毫无疑问还会显示更多错误。
在我看来,tempChar对于可以容纳多个字符的东西来说是个糟糕的名字。
正如@TLama指出的,OnActivate似乎是执行此代码的一个不寻常的地方。此事件将运行多次。也许您应该在启动时执行此代码。在任何情况下,这样的代码都不应该在事件处理程序中,而应该移动到事件处理程序可以调用的单独方法中。
你确定OnFormActivate是适合你所做工作的活动吗?
Lines[i,i2] := StrToInt(tempChar);