构建应用程序(下面的代码)时会显示提示:
H2077分配给objParam的值从未使用过
如何解决此提示?它甚至适用于我的情况吗?
function TESPGenerateParamList.RandomizationTimeConfiguration(SRandomizationTimeNode: string; eConfigType: string): Boolean;
var
objParam: Param;
sFirstNode : string;
nStartPos,nEndPos : word;
begin
try
try
objParam := ParamSchedulerRandomizationTime.Create;
if eConfigType = 'SETPARAM' then
begin
ParamSchedulerRandomizationTime(objParam).FrameType := Set_Param;
//TIMEOUT Node
sFirstNode := '';
if SearchNode(rsMinutes,SRandomizationTimeNode,sFirstNode,nStartPos,nEndPos,false) then
begin
ParamSchedulerRandomizationTime(objParam).SetParam(0, strtoint(trim(sFirstNode)));
end;
end
else if eConfigType = 'GETPARAM' then
begin
ParamSchedulerRandomizationTime(objParam).FrameType := Get_Param;
ParamSchedulerRandomizationTime(objParam).GetParam(0);
end;
slConfigurationList.AddObject(objParam.ClassName, objParam);
result := true;
except
on E: Exception do
begin
LogErrorMessage('uTESPGenerateParamList-->RandomizationTimeConfiguration' + E.Message);
result := false;
raise;
end;
end;
finally
objParam := nil; //(for here it give hint)
end;
end;
答案 0 :(得分:0)
编译器绝对正确。在该分配之后,您不会引用该变量。在所有情况下发生的下一件事是函数终止。
要解决提示,请完全删除赋值语句。然后,您也可以移除周围的try
- finally
块,因为finally
部分没有任何结果。
但是假设赋值语句是首先处理引用对象的正确方法。如果Param
是类类型而不是接口,那可能不是。在这种情况下,请保留try
- finally
块,但将作业替换为Param.Free
,就像您在许多其他Delphi示例中确实看到的一样。然后,将最初的objParam
分配向上移动两行,以便在之前进入第一个try
部分。