![]() |
Noch mal zu Zip Archiven
Hallo :hi:
so jetzt habe ich eine gute Zip Komponente gefunden...ZipForge Jetzt ,öchte ich mithilfe einer ListBox oder ListView oder... Dateien öffnen und dann wenn man auf einen Button klickt, das dann diese Dateien die sich in der ListBox oder ListView...befinden und ein Zip Archiv bilden... Leider komme ich nicht klar damit...könnte mir jemand helfen?? Mfg ..:mozZzI:.. |
Re: Noch mal zu Zip Archiven
So habe ich das bei mir gemacht:
Delphi-Quellcode:
Grüsse
var
index: integer; begin ZipForge1.FileName := 'C:\Archiv.zip'; ZipForge1.OpenArchive(fmCreate); for index := 0 to Listbox1.Items.Count - 1 do begin ZipForge1.BaseDir := Listbox1.Items.Count[index]; ZipForge1.AddFiles('*.*'); end; ZipForge1.CloseArchive; end; Matthias |
Re: Noch mal zu Zip Archiven
Deinen Code verstehe ich, aber bei mir spuckt er eine Fehlermeldung aus...
Delphi-Quellcode:
Mfg
...
procedure TForm1.Button2Click(Sender: TObject); var index: integer; begin ZipForge1.FileName := 'C:\Archiv.zip'; ZipForge1.OpenArchive(fmCreate); for index := 0 to Listbox1.Items.Count - 1 do //<<<Array-Typ erforderlich begin ZipForge1.BaseDir := Listbox1.Items.Count[index]; ZipForge1.AddFiles('*.*'); end; ZipForge1.CloseArchive; end; mozZzI |
Re: Noch mal zu Zip Archiven
Hi,
dein Fehler liegt eine Zeile tiefer :
Delphi-Quellcode:
ListBox1.Items.Count ist natürlich eine Zahl, ersetz mal das Count durch ein Strings dann klappt das sicher auch.
ZipForge1.BaseDir := Listbox1.Items.Count[index];
Gruß Der Unwissende |
Re: Noch mal zu Zip Archiven
Huch ja sicher, hab das Count aus versehen mit reingehauen, ist bei mir ohne Count. :duck:
|
Re: Noch mal zu Zip Archiven
Liste der Anhänge anzeigen (Anzahl: 1)
Genau, des wars...
programm läuft und speichert auch ein zip archiv, doch ohne inhalt :shock: Komisch was passt da nicht?? |
Re: Noch mal zu Zip Archiven
Hm, also erstmal meine übliche Kritik was Codestil angeht, du solltest dir die Konvention etwas näher anschauen. Ich weiß, es ist noch kein großes Programm und glaub mir ich war Jahrelang noch viel schlimmer unterwegs, aber guter Code hat weniger Fehler (wirklicher Fakt) und man findet sie auch leichter. Rück ein wenig mehr ein, benutz self und beachte ein paar der anderen Regeln, denn je eher man damit anfängt desto besser ist es, aber das ist nur ein Tipp!
Was deinen Code angeht, so solltest du erstmal schauen, was für Rückgabewerte einzelne Funktionen haben. So gibt dir ein SaveDialog (auch ein OpenDialog) ein Boolean zurück. Ist diese Rückgabe wahr, wurde ok gedrückt, sonst abgebrochen. Für dein ZipForge setzt du ein BaseDir (BasisVerzeichnis), du öffnest aber bestimmte Files. Also bleibt dein Zip einfach leer, weil dein Verzeichnis ungültig ist (eine Datei ist einfach kein Verzeichnis). Um jetzt das ganze Verzeichnis zu packen, indem sich deine Datei befindet solltest du also unbedingt einen anderen Dialog verwenden (so dass auch die Auswahl von Verzeichnissen und nur eben nur diesen möglich ist). Allerdings hast du dann natürlich auch das Problem, dass du mit der aktuellen Filtermaske direkt ein ganzes Verzeichnis (alle Datein + Ordner) packst. Möchtest du hingegen wirklich nur die ausgewählten Dateien packen, wirst du um AddFromStream nicht rumkommen (dazu schaust du dir am Besten mal die TFileStreams an (findest du auch viel Hilfe in der DP). Dann solltest du aber in deinem OpenDialog auch noch Multiselect erlauben. |
Re: Noch mal zu Zip Archiven
Dankeschön Der_Unwisssende!!
Daran hats gelegen jetzt funktionierts... :hello: also danke nochmals Edit: Habs mit FileCtrl SelectFolder gemacht... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 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