Я нашел a solution, чтобы извлечь содержимое zip-файла, создав DLL, используя Ole. Я положил свой собственный контакт с этой функцией, но по некоторым причинам, компилятор жалуется, что результат работы функции никогда не используется ...Результат целочисленной функции - «Значение, присвоенное« [имя функции] »никогда не используется»
library unzipper;
{
title : UnZip for InnoSetup
version : 1.0
author : Daniel P. Stasinski
email : [email protected]
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
- что мой собственный код ошибки, если вся функция не работает. Я не считаю, что компилятор должен жаловаться на это, но я мог ошибаться. Я всегда уничтожаю все подсказки и предупреждения компилятора, но в этом случае компилятор больше жалуется.
Является ли это случайностью в компиляторе или что-то не так в коде?
Почему вы решили распаковать этот путь, когда Delphi построил библиотеки? И т. П. Аббр. И так далее. И почему GetLastError будет здесь значимым? Я не вижу причин поверить в это. –