djc*_*cis 4 delphi pascal delphi-2005
我已经宣布了以下功能:
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;
Run Code Online (Sandbox Code Playgroud)
我试着用这段代码执行它:
if label1.Caption = '' then res := next('current', 'next');
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[错误] 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');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3817 次 |
最近记录: |