编辑:
有没有更好的方法呢?
TPendingBets = class(TDataModule)
private
public
function GetBdy(out IdEvent : Integer ) : Boolean; overload;
function GetBdy(out IdEvent : Integer; out idBetType : TBetTypes) : Boolean; overload;
function GetBdy(out IdEvent : Integer; out idBetType : TBetTypes; Out TotalOrgStake,Price : Double; out PriceError :Boolean): Boolean; overload;
end;
implementation
Run Code Online (Sandbox Code Playgroud)
////////////////////
function TPendingBets.GetBdy(out IdEvent : Integer ): Boolean;
var idBetType : TBetTypes;
TotalOrgStake,Price : Double;
PriceError :Boolean;
begin
result := GetBdy(IdEvent,idBetType,TotalOrgStake,Price,PriceError);
end;
Run Code Online (Sandbox Code Playgroud)
////////////////////
function TPendingBets.GetBdy(out IdEvent : Integer; out idBetType : TBetTypes): Boolean;
var TotalOrgStake,Price : Double;
PriceError :Boolean;
begin
result := GetBdy(IdEvent,idBetType,TotalOrgStake,Price,PriceError);
end;
Run Code Online (Sandbox Code Playgroud)
////////////////////
function TPendingBets.GetBdy(out IdEvent : Integer; out idBetType : TBetTypes; Out TotalOrgStake,Price : Double; out PriceError :Boolean): Boolean;
begin
result := false;
if cdBdy.Eof = False then
begin
IdEvent := cdBdy.FieldByName(IdEvent ).AsInteger);
idBetType := TBetTypes(cdBdy.FieldByName(idBetType ).AsInteger);
//.
//.
result := True;
end;
end;
Run Code Online (Sandbox Code Playgroud)
注意:
由于我最初的问题不是很清楚,我已经删除了部分内容
重载并不意味着在函数中有5个代码副本.您可能有5个函数,但其中4个函数只使用正确的参数调用 main函数.
我一般不喜欢出来的参数.您是否考虑过返回包含所有结果的记录?
Fn1Result = record
A: Extended;
B: Integer;
C, D, E, F: Extended
S: String;
end;
Run Code Online (Sandbox Code Playgroud)
然后声明你的函数:
function Fn1: Fn1Result;
begin
Fn1.A := C_ConstA;
// etc. . . .
end;
Run Code Online (Sandbox Code Playgroud)
当然我假设您没有使用输出参数作为输入.根据Delphi的帮助:
out参数(如变量参数)通过引用传递.但是,使用out参数时,引用变量的初始值将被传递给它的例程放弃.out参数仅用于输出; 也就是说,它告诉函数或过程存储输出的位置,但不提供任何输入.
我觉得你使用输出参数作为输入参数很有趣.别.如果您希望它们双向传递,请将它们作为var传递.
我认为过载解决方案是一个很好的解决方案,至少它是一个.其他编程语言要求您声明具有不同名称的函数.
另一种方法可能是动态数组参数,如:
type
TExtendedDynArray = array of Extended; // if not already declared elsewhere
function Fn1(out arr: TExtendedDynArray): Boolean;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8629 次 |
| 最近记录: |