假设我有一个"重"记录,例如包含多个动态值数组.我这样声明:
PMyHugeRecord^ = TMyHugeRecord;
TMyHugeRecord = record
AFirstArray: TSingleDynArray;
// many many others
...
ALastArray: TSingleDynArray;
end;
Run Code Online (Sandbox Code Playgroud)
处理发生在函数中,是否应该将函数的结果键入为指针,还是可以返回记录变量?
function MyFunctionWhichCalculates: TMyHugeRecord;
// or
function MyFunctionWhichCalculates: PMyHugeRecord;
Run Code Online (Sandbox Code Playgroud)
我的意思是在性能方面,尤其是避免堆栈溢出.换句话说,函数是通过引用还是通过值返回结果?
浏览一些遗留代码,我遇到一些“空”的 except 块。它们都是出于类似的原因而实现的,即处理从 TEdit 中的文本到数值的转换。由于 TEdit 可能为空,因此在这种情况下不应出现错误消息:
procedure TmyForm.EditExit(Sender: TObject);
begin
...
try
_value := StrToFloat(Edit.Text);
except
end;
...
end;
Run Code Online (Sandbox Code Playgroud)
这很有效,但我想这并不是一个好的做法。有没有更好的方法来获得相同的行为?