gpt4 book ai didi

Delphi 过程参数的默认值

转载 作者:行者123 更新时间:2023-12-03 14:40:00 24 4
gpt4 key购买 nike

procedure CaseListMyShares(search: String);

我有一个这样的程序。内容如下:

procedure TFormMain.CaseListMyShares(search: String);
var
i: Integer;
begin
myShares := obAkasShareApiAdapter.UserShares('1', search, '', '');
MySharesGrid.RowCount:= Length(myShares) +1;
MySharesGrid.AddCheckBoxColumn(0, false);
MySharesGrid.AutoFitColumns;

for i := 0 to Length(myShares) -1 do
begin
MySharesGrid.Cells[1, i+1]:= myShares[i].patientCase;
MySharesGrid.Cells[2, i+1]:= myShares[i].sharedUser;
MySharesGrid.Cells[3, i+1]:= myShares[i].creationDate;
MySharesGrid.Cells[4, i+1]:= statusText[StrToInt(myShares[i].situation) -1];
MySharesGrid.Cells[5, i+1]:= '';
MySharesGrid.Cells[6, i+1]:= '';
end;
end;

我想以两种方式调用这个函数:不带任何参数和带参数。我找到了程序的 overload 关键字,但我不想编写相同的函数两次。

如果我像 CaseListMyShares(''); 那样调用此过程,它就会起作用。

但是我可以在delphi中这样做吗?

procedure TFormMain.CaseListMyShares(search = '': String);

并调用:

CaseListMyShares();

最佳答案

有两种方法可以实现这一目标。这两种方法都很有用,而且通常可以互换。然而,在某些情况下,其中一种或另一种更可取,因此了解以下两种技术是值得的。

默认参数值

其语法如下:

procedure DoSomething(Param: string = '');

您可以像这样调用该方法:

DoSomething();
DoSomething('');

以上两者的行为方式相同。事实上,当编译器遇到 DoSomething() 时,它只是替换默认参数值并编译代码,就像您编写 DoSomething('') 一样。

文档:Default Parameters .

重载方法

procedure DoSomething(Param: string); overload;
procedure DoSomething; overload;

这些方法的实现如下:

procedure TMyClass.DoSomething(Param: string);
begin
// implement logic of the method here
end;

procedure TMyClass.DoSomething;
begin
DoSomething('');
end;

请注意,逻辑主体仍然只实现一次。当以这种方式编写重载时,将有一个方法来执行工作,以及许多其他重载调用该一个主方法。`

文档:Overloading Procedures and Functions .

关于Delphi 过程参数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47787993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com