Creating Compressed (Zipped) Folder using Delphi

前端 未结 9 2351
日久生厌
日久生厌 2021-02-05 18:52

Can I create Windows XP\'s Compressed (Zipped) Folder using Delphi?

9条回答
  •  轮回少年
    2021-02-05 19:04

    Some time ago, I've tried all of the Delphi compression libraries that I could find, and eventually I ended up using KaZip by Kiril Antonov.

    My requirements were:

    • Free;
    • Open source;
    • Native Delphi code;
    • No external dependencies (dll, exe). My most important requirement;
    • Small memory footprint;
    • Easy to use;

    I use it mainly to turn .kml files into .kmz, and it does that amazingly fast.

    Here's an example of how I use it:

    uses
      KaZip;
    
    ...
    
    // replaces a .kml file with a .kmz file
    procedure KmlToKmz(const aFileName: string);
    var
      FS: TFileStream;
      KaZip:TKaZip;
      KmzFileName:TFileName;
    begin
      KmzFileName := ChangeFileExt(aFileName, '.kmz');
      KaZip := TKaZip.Create(nil);
      try
        // create an empty zipfile with .kmz extension:
        FS := TFileStream.Create(KmzFileName, fmOpenReadWrite or FmCreate);
        try
          KaZip.CreateZip(FS);
        finally
          FS.Free;
        end;        
    
        KaZip.Open(KmzFileName); // Open the new .kmz zipfile
        KaZip.Entries.AddFile(aFileName); // add the .kml
        KaZip.Close; 
        DeleteFile(aFileName); // delete the .kml
      finally
        KaZip.Free;
      end;
    end;
    

提交回复
热议问题