dcc32提示H2077分配给' objParam'没用过

时间:2017-02-21 10:49:40

标签: delphi

构建应用程序(下面的代码)时会显示提示:

  

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;

1 个答案:

答案 0 :(得分:0)

编译器绝对正确。在该分配之后,您不会引用该变量。在所有情况下发生的下一件事是函数终止。

要解决提示,请完全删除赋值语句。然后,您也可以移除周围的try - finally块,因为finally部分没有任何结果。

但是假设赋值语句是首先处理引用对象的正确方法。如果Param是类类型而不是接口,那可能不是。在这种情况下,请保留try - finally块,但将作业替换为Param.Free,就像您在许多其他Delphi示例中确实看到的一样。然后,将最初的objParam分配向上移动两行,以便之前进入第一个try部分。