Использование с 7 zip от Delphi?

Это обычно происходит, когда платформа конфигурации сборки в Visual Studio неверна, это может произойти на обеих платформах конфигурации конфигурации, x86 и x64.

Это связано с несоответствием между платформой конфигурации сборки ваш проект и Microsoft Access Database Engine, установленный на вашем компьютере.

Чтобы устранить эту ошибку:

  • Измените платформу конфигурации сборки в Visual Studio
  • убедитесь, что он соответствует
  • версии Microsoft Access Database Engine на вашем компьютере
  • Перекомпилируйте и запустите проект
  • Ошибка времени выполнения разрешено
24
задан 4 revs, 2 users 50% 28 August 2009 в 00:13
поделиться

4 ответа

С выпуска 1.102 Библиотека Кода ДЖЕДАЯ имеет поддержку С 7 zip встроенный в единица JclCompression . Еще не использовали его самостоятельно, все же.

28
ответ дан Community 28 November 2019 в 22:37
поделиться

Если Вы намереваетесь использовать 7Zip только для zip и разархивировать, смотрят на компонент TZip. Я записал маленькую обертку в своих собственных целях, которые можно найти в файл Zipper.pas , не стесняйтесь снова использовать.

1
ответ дан Drejc 28 November 2019 в 22:37
поделиться

Расширяя ответ Оливера Гизена, как и в случае с большой частью библиотеки кода JEDI, я не смог найти достойной документации, но это работает для меня:

uses
   JclCompression;

procedure TfrmSevenZipTest.Button1Click(Sender: TObject);
const
   FILENAME = 'F:\temp\test.zip';
var
   archiveclass: TJclDecompressArchiveClass;
   archive: TJclDecompressArchive;
   item: TJclCompressionItem;
   s: String;
   i: Integer;
begin
   archiveclass := GetArchiveFormats.FindDecompressFormat(FILENAME);

   if not Assigned(archiveclass) then
      raise Exception.Create('Could not determine the Format of ' + FILENAME);

   archive := archiveclass.Create(FILENAME);
   try
      if not (archive is TJclSevenZipDecompressArchive) then
         raise Exception.Create('This format is not handled by 7z.dll');

      archive.ListFiles;

      s := Format('test.zip Item Count: %d'#13#10#13#10, [archive.ItemCount]);

      for i := 0 to archive.ItemCount - 1 do
      begin
         item := archive.Items[i];
         case item.Kind of
            ikFile:
               s := s + IntToStr(i+1) + ': ' + item.PackedName + #13#10;
            ikDirectory:
               s := s + IntToStr(i+1) + ': ' + item.PackedName + '\'#13#10;//'
         end;
      end;

      if archive.ItemCount > 0 then
      begin
//         archive.Items[0].Selected := true;
//         archive.ExtractSelected('F:\temp\test');

         archive.ExtractAll('F:\temp\test');
      end;

      ShowMessage(s);
   finally
      archive.Free;
   end;
end;
23
ответ дан 28 November 2019 в 22:37
поделиться
6
ответ дан 28 November 2019 в 22:37
поделиться