![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 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