![]() |
Abbrevia + Folders
Wie bekomme ich es hin dass mir das Teil auch ganze Ordner zippt?
So sieht mein Code bisher aus:
Delphi-Quellcode:
begin
try AbZipper1.BaseDirectory := ExtractFilePath(FileName); AbZipper1.FileName := s; abZipper1.OpenArchive(s); AbZipper1.AddFiles(ExtractFileName(FileName), 0); AbZipper1.Save; AbZipper1.CloseArchive; ShowMessage(ExtractFileName(FileName) + ' zipped'); except on E: Exception do ShowMessage('NO: ' + E.Message); end; end; |
Re: Abbrevia + Folders
Hallo japetos,
schau mal die Komponente hat unter StoreOptions ein Element, diese auf soRecurse = True setzen oder
Delphi-Quellcode:
AbZipper1.StoreOptions := [soStripDrive,soRemoveDots,soRecurse]
|
Re: Abbrevia + Folders
1. in den Optionen hab ich das schon gemacht.
2. wenn ich dann soRecurse := true setze wird zwar das zip-file erstellt, allerding ohne jeglichen Inhalt. |
Re: Abbrevia + Folders
Hallo japetos,
probiers mal damit
Delphi-Quellcode:
geht natürlich auch mit try AbZipper1.BaseDirectory := 'C:\mypath\'; AbZipper1.FileName := 'my.zip'; AbZipper1.StoreOptions := [soStripDrive, soRemoveDots, soRecurse]; AbZipper1.AddFiles('*.*', faReadOnly + faDirectory + faArchive + faAnyFile); AbZipper1.Save; AbZipper1.CloseArchive; ShowMessage('zipped'); except on E: Exception do ShowMessage('NO: ' + E.Message); end;
Delphi-Quellcode:
AbZipper1.AddFiles('*.*', 0);
|
Re: Abbrevia + Folders
bei:
Delphi-Quellcode:
kommt die Fehlermeldung: undeclared Identifier
AbZipper1.StoreOptions := [soStripDrive, soRemoveDots, soRecurse];
bei:
Delphi-Quellcode:
kommt die Fehlermeldung: Incompatible Types
AbZipper1.AddFiles('*.*', faReadOnly + faDirectory + faArchive + faAnyFile);
und wenn ich
Delphi-Quellcode:
eingebe, dann zippt er mir alles was auf dem Desktop ist :(
AbZipper1.AddFiles('*.*', 0);
|
Re: Abbrevia + Folders
Zitat:
Zitat:
Welche Version verwendest du ? bist du mal mit dem Debugger durch, die sourcen sind ja mit dabei Zitat:
Ich bekomme bei diesem code keinen Fehler ! sonst hätte ich ihn ja nicht gepostet
Delphi-Quellcode:
und diese Variante geht auch
try
AbZipper1.BaseDirectory := 'C:\mypath\'; AbZipper1.FileName := 'my.zip'; AbZipper1.StoreOptions := [soStripDrive, soRemoveDots, soRecurse]; AbZipper1.AddFiles('*.*', 0); AbZipper1.Save; AbZipper1.CloseArchive; ShowMessage('zipped'); except on E: Exception do ShowMessage('NO: ' + E.Message); end
Delphi-Quellcode:
und die Komponente ist so im dfm-file beschrieben
try
AbZipper1.BaseDirectory := 'C:\mypath\'; AbZipper1.FileName := 'my.zip'; AbZipper1.AddFiles('*.*', 0); AbZipper1.Save; AbZipper1.CloseArchive; ShowMessage('zipped'); except on E: Exception do ShowMessage('NO: ' + E.Message); end
Delphi-Quellcode:
versuche zuerst über einen statischen Pfad eine Lösung zu finden,
object AbZipper1: TAbZipper
AutoSave = True DOSMode = False StoreOptions = [soStripDrive, soRemoveDots, soRecurse] Left = 120 Top = 72 end wenn es dann funktioniert kannst du immer noch ExtractFilePath(FileName) verwenden |
Re: Abbrevia + Folders
nope.
hab jetzt beides ausprobiert. beim ersten erstellt er zwar das ZIP aber ohne Inhalt und bei zweiten zippt es alles was sich auf dem Desktop befindet. Total bescheuert. :wall: |
Re: Abbrevia + Folders
Zitat:
welche Version von Abbrevia verwendest du ? aus welchen Pfad wird die Applikation gestartet - überprüfe das ? Zitat:
geh mal mit dem Debugger durch und schaue was er bei AbZipper1.BaseDirectory zuordnet ? später in AbZipper1.AddFiles('*.*', 0); welchen Pfad verwendet er und warum diesen ? Wie wird die FindFirst und FindNext in Abbrevia aufgerufen und abgearbeitet ? manchmal stelle ich Fragen, damit diese auch beantwortet werden, falls es zu einer Rückantwort kommt |
Re: Abbrevia + Folders
Moin japetos,
dass hier:
Delphi-Quellcode:
ist falsch.
faReadOnly + faDirectory + faArchive + faAnyFile
Solche Flags solltest Du nur mit or verknüpfen.
Code:
Der Funktion wird als der Wert 112 übergeben, was aufgeschlüsselt nach Flagwerten
faReadOnly = 1 => binär 00000001
faDirectory = 16 => binär 00010000 faArchive = 32 => binär 00100000 faAnyFile = 63 => binär 00111111 =================================== Summe = 112 => binär 01110000 =================================== OR = 63 => binär 00111111 ===================================
Delphi-Quellcode:
bedeutet.
faDirectory or faArchive or faSymLink
Mit OR verknüpft wäre es hingegen faAnyFile, was
Delphi-Quellcode:
entspricht.
faReadOnly or faHidden or faSysFile or faVolumeID or faDirectory or faArchive
|
Re: Abbrevia + Folders
@Christian Seehase
du hast recht, aber dann ist auch die Hilfe falsch (s.a. Das Beispiel zur FindFirst (Funktion) ) Im code der FindFirst-Funktion sieht man die richtige Schreibweise
Delphi-Quellcode:
Sorry :oops:
function FindFirst(const Path: string; Attr: Integer;
var F: TSearchRec): Integer; const faSpecial = faHidden or faSysFile or faVolumeID or faDirectory; Nur gut dass ich auch ein Beispiel ohne dieser Dateiattribute gemacht habe |
Re: Abbrevia + Folders
Moin trifid,
Zitat:
Das Beispiel hatte ich mir garnicht angesehen ;-) |
Re: Abbrevia + Folders
??? Bahnhof ???
getestet mit c:\mypath Abbreva Version: 3.05 die App wird aus diesem Pfad gestartet: C:\mypath Aenderung im dfm uebernommen! Ansosnten hab ich keine Ahnung wie ich das mit dem Debugger machen soll. Habs grad versucht. Aber da kam nichts bei raus. Es muss am Pfad liegen. |
Re: Abbrevia + Folders
Ich hab mal kurz die Abbrevia 3.05 BETA 6 von Sourceforge heruntergezogen und installiert.
Das ist die aktuellste BETA Dabei habe ich folgende 2 Varianten ausprobiert Neu war, dass AbZipper1.FileName den Pfad noch benötigt, naja
Delphi-Quellcode:
und die 2te Variantetry AbZipper1.BaseDirectory := 'C:\mypath\'; AbZipper1.FileName := 'C:\mypath\my.zip'; AbZipper1.AddFiles('*.*', faReadOnly or faDirectory or faArchive or faAnyFile); AbZipper1.Save; AbZipper1.CloseArchive; ShowMessage('zipped'); except on E: Exception do ShowMessage('NO: ' + E.Message); end
Delphi-Quellcode:
try AbZipper1.BaseDirectory := 'C:\mypath\'; AbZipper1.FileName := 'C:\mypath\my.zip'; AbZipper1.AddFiles('*.*', 0); AbZipper1.Save; AbZipper1.CloseArchive; ShowMessage('zipped'); except on E: Exception do ShowMessage('NO: ' + E.Message); end Zitat:
Zitat:
steht einmal im Handbuch oder du sucht nach Tutorials Abschließend zusammenfassend. Mit der V3.05Beta6 habe ich in beiden oben stehenden Varianten jeweils eine my.zip erzeugen können, die Dateien mit Unterverzeichnissen beinhaltet. Die Dateien der Unterverzeichnisse waren ebenfalls in der ZIP-Datei enthalten. Reproduzierbar. Der Bug wie auf sourceforge nachzulesen ist, dass leere Unterverzeichnisse nicht mit aufgenommen werden, dürfte auch bekannt sein. |
Re: Abbrevia + Folders
VIELEN VIELEN DANK.
Werde mich morgen damit beschäftigen. mit Zitat:
:duck: Sollte kein Aufruf zu Komentaren sein. also nochmals vielen Danke für die Mühe. :freak: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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