[英]Error: No overloaded versoin of 'IntToStr'
编译以下代码时:
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
的声明:
tempChar : String;
它是一个字符串。 这是编译器拒绝的调用:
Lines[i,i2] := IntToStr(tempChar);
IntToStr
函数具有各种重载,它接受整数输入参数并返回字符串。 您不能将字符串传递给IntToStr
。 也许您打算写:
Lines[i,i2] := StrToInt(tempChar);
其他一些评论:
Lines
。 这意味着尽管代码可以编译,但在运行时将失败。 aLines
声明为aLines
array[1..5] of integer
,因此i2
的有效值为1
到5
含)。 您使用0
到4
含0
和4
。 再次,这将在运行时咬伤。 tempChar
是一个不好的名字,因为它可以容纳多个字符。 OnActivate
似乎是执行此代码的不寻常地方。 此事件将运行多次。 也许您应该在启动时执行此代码。 无论如何,这样的代码都不应放在事件处理程序中,而应移到事件处理程序可以调用的单独方法中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.