我已宣布以下功能:
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太多了 实际参数
我认为所有参数都很好,为什么我会收到错误?
答案 0 :(得分:7)
我刚刚在Delphi 7和Delphi 2010上尝试过你的代码。如果它适用于这两个,它也适用于Delphi 2005。
结论:由于代码范围/可见性,Delphi希望使用不同版本的“下一个”例程。尝试ctrl +点击“res:= next();”中的“next”并看看Delphi带你去哪儿。或者发布更多代码,以便我们可以告诉您Delphi为什么不选择“下一个”例程的版本。理想情况下,您应该发布一个整体,从“单位名称”开始到最后的“结束”。
答案 1 :(得分:7)
正如Cosmin Prund所指出的那样,问题在于可见性。
TForm
有一个名为Next
的程序,该程序不接受任何参数。
您的函数使用相同的名称,并且在调用TForm1类实现中的函数时,编译器将调用视为TForm1.Next
,因此它给出了错误。
要解决此问题,请在函数名称之前的单位名称前面加上,即Unit1.Next()
。
所以这应该是你的代码
if label1.Caption = '' then res := Unit1.next('current', 'next');