[英]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.