Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ordnerstruktur im ZipFile (https://www.delphipraxis.net/127919-ordnerstruktur-im-zipfile.html)

Moony 21. Jan 2009 07:50


Ordnerstruktur im ZipFile
 
Hallo zusammen,

ich habe folgendes Anliegen:

Mit meiner bestehenden Applikation erstelle ich von verschiedenen Verzeichnissen ein ZipFile mit TZipmaster. Dies geschieht folgendermaßen:

Delphi-Quellcode:
  cz            := TZipMaster.Create(nil);
  cz.ZipFilename := MyZipFileName;
  if not DirectoryExists(Exportdir.Caption) then // Ausgabeverzeichnis für das Zip-File
    ForceDirectories(Exportdir.Caption);
  cz.AddOptions := [AddRecurseDirs, AddDirNames, AddSeparateDirs];
  cz.FSpecArgs.Add(ChangeFileExt(ImageDir.Caption, '*.*'));
  ...
  ...
  cz.Add;

  while cz.ZipBusy do
    Application.ProcessMessages;

  cz.Free;
So, das funktioniert ja alles richtig, aber es wird die komplette Verzeichnisstruktur entnommen die ich mit der Datei angebe.
Bsp.: D:\Test\MeineBilder\*.*
dann ist im Zipfile folgende Struktur: Test\MeineBilder\*.*

Hier liegt mein Problem! Ich möchte eine eigene Verzeichnisstruktur im Zip-File definieren und lediglich die Dateien kopieren.

Bsp.: D:\Test\MeineBilder\*.* -> alle Dateien aus dem MeineBilder sollen entnommen werden
im Zipfile soll die Struktur z.B. so aussehen: Kunde\Backup\Bilder\*.*


Ich hoffe die Erläuterungen sind soweit verständlich.

Danke im Voraus & Gruß, Moony

aayb 21. Jan 2009 08:30

Re: Ordnerstruktur im ZipFile
 
Hi,

ich denke, "RootDir" ist das, was du suchst.

Aus der Help:
Zitat:

property RootDir: String;

Description:

The RootDir property determines where zipping will start for any filenames or wildcard entries in the FSpecArgs property.


Example:
ZipMaster1.RootDir := 'D:\Program Files\Start';
ZipMaster1.FSpecArgs.Add( 'Dir1\MyFile.html' );
ZipMaster1.FSpecArgs.Add( '*.h' );
ZipMaster1.Add;

This will add the file "D:\Program Files\Start\Dir1\MyFile.htm" as "Dir1\MyFile.html"
and all files "D:\Program Files\Start\*.h" as "*.h" to the ziparchive.
gr.
aayb

Moony 21. Jan 2009 08:34

Re: Ordnerstruktur im ZipFile
 
Das kann ich ja nicht machen, weil ich sonst ständig das RootDir ändern müßte, da ich unterschiedliche Verzeichnisse verwende.
Das mit der übergeordneten Struktur habe ich bereits hinbekommen. D.h. dass ich lediglich die Dateien aus dem genannten Verzeichnis ins Zip-File kopiere: Bei AddOptions darf "AddDirNames" nicht mit angegeben werden.

Aber was mir noch fehlt ist eben die Struktur innerhalb des Zipfiles.

Moony 21. Jan 2009 09:28

Re: Ordnerstruktur im ZipFile
 
So, ich habe es nun geschafft die besch... Struktur zu ändern! Für alle die es interessiert:

1. Bei den AddOptions muß die Option "AddDirNames" eingetragen werden.
2. In dem Ereignis "OnSetNewName" vom TZipmaster kann dann in OldFileName die Struktur neu bestimmt werden:
D:\Test\MeineBilder\Bild.jpg -> hinzugefügte Datei
OldFileName := 'Kunde\Backup\Bilder\' + ExtractFileName(OldFileName);
3. Anschließend MUSS IsChanged auf True gesetzt werden.

E voila fertig ist die neue Struktur!

Gruß & Danke, Moony


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz