سؤال

أرغب في استخدام ملفات 7-Zip DLL من دلفي ولكن لم أتمكن من العثور على وثائق أو أمثلة مناسبة.هل يعرف أحد كيفية استخدام ملفات 7-Zip DLL من دلفي؟

هل كانت مفيدة؟

المحلول

اعتبارًا من الإصدار 1.102 مكتبة كود JEDI لديه دعم ل 7-الرمز البريدي بنيت في JclCompression وحدة.لم أستخدمها بنفسي بعد، رغم ذلك.

نصائح أخرى

بالتوسع في إجابة أوليفر جيسين، كما هو الحال مع الكثير من مكتبة كود 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;

7 واجهة برمجة تطبيقات البرنامج المساعد Zip

http://www.progdigy.com/?page_id=13

Zip و7z بدون DLL، جرب الملخص:http://synopse.info/forum/viewtopic.php?pid=163

لدى دلفي الآن دعم مضغوط أصلي عبر الأنظمة الأساسية مع TZipFile في XE2:

كيفية استخراج الملفات المضغوطة باستخدام TZipFile في Delphi XE2 وFireMonkey

إذا كنت تنوي استخدام 7Zip فقط للضغط وفك الضغط، فقم بإلقاء نظرة على TZip عنصر.لقد كتبت غلافًا صغيرًا لأغراضي الخاصة، والذي يمكنك العثور عليه في زيبر.باس الملف، لا تتردد في إعادة استخدامه.

لقد جربت العديد من الحلول وواجهت مشاكل، هذا الحل نجح.

تحميل https://github.com/zedalaye/d7zipانسخ 7z.dll و sevenzip.pas إلى دليل مشروعك وأضف Sevenzip.pas إلى مشروعك.

ثم يمكنك استخدام هذا لفك الضغط:

using sevenzip;

procedure Unzip7zFile (zipFullFname:string);
  var
    outDir:string;
  begin
    with CreateInArchive(CLSID_CFormat7z) do
    begin  
      OpenFile(zipFullFname);
      outDir := ChangeFileExt(zipFullFname, '');
      ForceDirectories (outDir);
      ExtractTo(outDir);
    end;
  end;

الاستخدام:

Unzip7zFile(ExtractFilePath(Application.ExeName) + 'STR_SI_FULL_1000420.7z');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top