gpt4 book ai didi

delphi - Delphi 函数中变量可能尚未初始化

转载 作者:行者123 更新时间:2023-12-03 15:41:50 25 4
gpt4 key购买 nike

我正在构建这个函数,它将返回查询是否返回 ID。我是 Delphi 新手,我收到错误

Variable emailExistsId may not be initialized.

我的代码:

function emailExists (const APersonId: TStandardPK) : Boolean ;
var
Email : TPhoneEmail;
emailExistsId: TStandardPK;

begin
Email := TPhoneEmail.Create(nil);
try
emailExistsId := Email.qrySelect.FieldByName('id').AsFloat;
finally
if emailExistsId <> 0 then
Result := TRUE
else
Result :=False;
end;
end;

最佳答案

提示是正确的。考虑代码:

try
emailExistsId := Email.qrySelect.FieldByName('id').AsFloat;
finally
if emailExistsId <> 0 then
Result := TRUE
else
Result :=False;
end;

如果 Email.qrySelect.FieldByName('id').AsFloat 的计算导致异常,则 emailExistsId 将不会被分配值。然后,您的代码会读取处于未初始化状态的 emailExistsId。因此编译器会产生一个提示。当然,这一切都毫无意义,因为异常会传播并且调用者在任何情况下都不会收到返回值。

无论如何,你的代码都太复杂了,并且会泄漏。应该是:

function emailExists(const APersonId: TStandardPK): Boolean;
var
Email: TPhoneEmail;
begin
Email := TPhoneEmail.Create(nil);
try
Result := Email.qrySelect.FieldByName('id').AsFloat <> 0;
finally
Email.Free;
end;
end;

关于delphi - Delphi 函数中变量可能尚未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45707850/

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