[英]Why does the compiler say “Too many actual parameters” when I think I've provided the correct number?
我已經宣布了以下功能:
function next(current, next: string): Integer;
begin
form1.Label1.Caption := next;
form1.Label2.Caption := current;
form1.label3.Caption := clipboard.AsText+inttostr(c);
Result:=1;
end;
我試着用這段代碼執行它:
if label1.Caption = '' then res := next('current', 'next');
我收到以下錯誤:
[錯誤] Unit1.pas(47):E2034實際參數太多
我認為所有參數都很好,為什么我會收到這個錯誤?
我剛剛在Delphi 7和Delphi 2010上嘗試過你的代碼。如果它適用於這兩個,它也適用於Delphi 2005。
結論:由於代碼范圍/可見性,Delphi希望使用不同版本的“下一個”例程。 嘗試ctrl +點擊“res:= next();”中的“next” 並看看Delphi帶你去哪兒。 或者發布更多代碼,以便我們可以告訴您Delphi為什么不選擇“下一個”例程的版本。 理想情況下,您應該發布一個整體,從“單位名稱”開始到最后的“結束”。
正如Cosmin Prund所指出的那樣,問題在於能見度。
TForm
有一個名為Next
的過程,它不接受任何參數。
你的函數使用相同的名稱,並且在調用TForm1類實現中的函數時,編譯器將調用視為TForm1.Next
,因此它給出了錯誤。
要解決此問題,請在函數名稱之前的單元名稱前面,即Unit1.Next()
。
所以這應該是你的代碼
if label1.Caption = '' then res := Unit1.next('current', 'next');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.