簡體   English   中英

當我認為我提供了正確的數字時,為什么編譯器會說“實際參數太多”?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM