Delphi 有一個以值退出的選項(例如:Exit(0);),但是如果回傳值是一條記錄,我如何以一個值退出?
TIntResult = record
Value: Integer;
Error: String;
end;
function GetCount: TIntResult;
begin
if not IsLoggedIn then
Exit(Value: 0; Error: 'Not logged in'); // I want this
if not IsAdmin then
Exit(TIntResult(Value: 0; Error: 'Not Admin')); // or this
...
end;
uj5u.com熱心網友回復:
當然,您始終可以使用Result變數和Exit。
但是如果你想使用 Delphi 2009 Exit(...)語法——而不給它一個TIntResult-typed 變數——,兩個最明顯的選項是:
使用建構式
type
TIntResult = record
Value: Integer;
Error: string;
constructor Create(AValue: Integer; const AError: string);
end;
{ TIntResult }
constructor TIntResult.Create(AValue: Integer; const AError: string);
begin
Value := AValue;
Error := AError;
end;
然后你可以這樣做:
function Test: TIntResult;
begin
// ...
Exit(TIntResult.Create(394, 'Invalid page.'));
end;
使用TIntResult-returning 函式
function IntRes(AValue: Integer; const AError: string): TIntResult;
begin
Result.Value := AValue;
Result.Error := AError;
end;
然后你可以這樣做:
function Test: TIntResult;
begin
// ...
Exit(IntRes(394, 'Invalid page.'));
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/322343.html
標籤:德尔福
上一篇:Delphijson陣列不帶括號
下一篇:為什么FileAge回傳意外值?
