整数函数结果 - "赋值给[' [函数名称]'从未使用"

时间:2014-02-02 00:11:29

标签: function delphi delphi-xe2

我发现a solution通过使用Ole创建DLL来提取zip文件的内容。我自己触摸了这个函数,但由于某种原因,编译器抱怨函数的结果从未使用过...

library unzipper;

{
  title     : UnZip for InnoSetup
  version   : 1.0
  author    : Daniel P. Stasinski
  email     : daniel@genericinbox.com
  begin     : Fri Nov 22 17:31:33 MST 2013
  license   : None
}

uses
  Windows,
  SysUtils,
  ComObj;

const
  SHCONTCH_NOPROGRESSBOX = 4;
  SHCONTCH_AUTORENAME = 8;
  SHCONTCH_RESPONDYESTOALL = 16;
  SHCONTF_INCLUDEHIDDEN = 128;
  SHCONTF_FOLDERS = 32;
  SHCONTF_NONFOLDERS = 64;

  UNZIP_SUCCESS = 0;
  UNZIP_FAIL = -1;

function UnzipFile(ZipFile, TargetFolder: WideString): Integer; stdcall;
var
  shellobj: variant;
  ZipFileV, SrcFile: variant;
  TargetFolderV, DestFolder: variant;
  shellfldritems: variant;
begin
  Result:= UNZIP_FAIL;
  try
    shellobj := CreateOleObject('Shell.Application');
    ZipFileV := string(ZipFile);
    TargetFolderV := string(TargetFolder);
    SrcFile := shellobj.NameSpace(ZipFileV);
    DestFolder := shellobj.NameSpace(TargetFolderV);
    shellfldritems := SrcFile.Items;
    DestFolder.CopyHere(shellfldritems, SHCONTCH_NOPROGRESSBOX or SHCONTCH_RESPONDYESTOALL);
    Result:= UNZIP_SUCCESS;
  except
    on e: exception do begin
      Result:= GetLastError;
    end;
  end;
end;

exports
  UnzipFile;

begin

end.

它给了我信息......

  

[DCC提示] Unzipper.dpr(35):H2077分配给'UnzipFile'的值从未使用过

这是来自函数中的第一行代码,我正在初始化为-1的常量 - 如果整个函数失败,这是我自己的错误代码。我不相信编译器应该抱怨这个,但我可能是错的。我总是消灭所有编译器提示和警告,但在这种情况下,编译器更像是一个抱怨者。

这是编译器中的侥幸,还是代码中有问题?

2 个答案:

答案 0 :(得分:5)

编译器是正确的,代码中有错误。 : - )

如果函数有效,函数将返回UNZIP_SUCCESS,如果引发异常,则返回GetLastError的结果。因此,第一次赋值给Result是不必要的 - 没有执行路径会导致UNZIP_FAIL被返回。

答案 1 :(得分:4)

如果删除第一行result分配,则没有执行路径使result未分配。因此,永远不会返回UNZIP_FAIL值。