Delphi TZipMaster - как ловить исключения? - PullRequest
0 голосов
/ 19 марта 2019

Я использую Delphi TZipMaster для создания и распаковки ZIP-файлов.Это работает, но проблема в том, что когда что-то идет не так, он не генерирует исключение, он показывает сообщение от самого компонента.

Так в коде ниже:

try
zipmaster1.ZipFileName := 'C:\example.zip';
zipmaster1.FSpecArgs.Clear;
zipmaster1.fspecargs.Add('installl.exe');
zipmaster1.ExtrBaseDir := 'c:\';
// the line below will show a message 'This archive is not a valid ZIP archive';
// i want it to throw an exception instead, so i can catch it and handle in my app
zipmaster1.Extract; 
except
// never will reach here
end;

1 Ответ

2 голосов
/ 20 марта 2019

Не думаю, что вам нужно делать то, что вы хотите, перехватывая исключения.

Компонент TZipMaster имеет событие OnMessage - см. Здесь документацию http://www.delphizip.org/192/help/index.html - которое вы можете использовать для обнаружения упомянутой вами ошибки, а затем для выполнения необходимых действий, например. вызывая метод TZipMaster Cancel.

Текущий код ошибки передается событию OnMessage. Значение errcode недействительного архивного сообщения - ZE_NoValidZip, поэтому, когда этот код передается в OnMessage, это может произойти, когда вы реагируете, вызывая Cancel.

...