![]() |
Datei in Zip Archiv
Hey Leute,
wie ihr vielleicht schon mitbekommen habt ich bin grade an einem Zip programm, läuft auch so weit gut. Im Programm kann man einstellen ob man den Verzeichnisnamen mit speichern will oder nicht. Nur wirds komisch ^^. Wenn man nun sagt verzeichnisnamen nicht mit Speichern und eine Datei hinzfügen will, die aber im selben Pfad ( unterordner usw ) auch vorhanden ist, bircht das Programm mit der Fehlermeldung "Duplicate Internal Name" ab. Wenn man aber sagt Verzeichnisnamen mit speichern klappt alles wunderbar und auch wenn die Datei im in selbern Pfad nicht vorhanden ist. Hier mein Quelltext:
Delphi-Quellcode:
Ich hoffe einer von euch hat die passende Antwort
begin
i2 := add.Files.Count; for i := 0 to i2 - 1 do begin neudatei := Extractfilename(add.Files[i]); Item := Dateilist.Items.add; Item.Caption := neudatei; if feinstellungen.checkbox1.Checked then begin // Das hat nichts mit Hinzufügen der Datei zutun, nur das der Pfad richtig angezeigt wird posi := pos('\',add.Files[i]); teilstring := copy(add.Files[i],posi+1); Item.SubItems.add(Extractfilename(lblpfad.Caption) + '/' + teilstring); end ELSE Item.SubItems.add(Extractfilename(lblpfad.Caption) + '/' + neudatei); try fneu.zip.FSpecArgs.add(add.Files[i]); fneu.zip.add; // Mit f5 und f8 habe ich herrausgefunden, das hier das Problem liegt, aber welches? fneu.zip.ZipComment := fneu.smemo1.Text; except fehlerhin := True; end; end; for iz := 0 to Dateilist.Items.Count - 1 do begin Item2 := Dateilist.Items[iz]; Item2.SubItems.add(inttostr(fneu.zip[iz].CompressedSize) + ' B'); Item2.SubItems.add(datetostr(fneu.zip[iz].DateStamp)); end; lblstatus.Caption := 'Dateien wurden hinzugefügt'; if (dialogshow) and not(fehlerhin) then showmessage('Datei/en wurden erfolgreich hinzugefügt'); Dateilist.Enabled := True; lblanzahl.Caption := inttostr(fneu.zip.Count); lblag.Caption := inttostr(fneu.zip.ZipFileSize div 1024) + ' KB'; if fehlerhin then lblstatus.Caption := 'Fehler beim hinzufügen'; end ELSE lblstatus.Caption := '-----'; PS: Ich benutze zum Hinzufügen der Dateien die Komponente : ZipMaster19 Gruß Mathias Jansen |
AW: Datei in Zip Archiv
Ich kenne die Komponente jetzt nicht, aber wahrscheinlich muss die Kombination aus Pfad und Dateiname innerhalb des Archivs eindeutig sein. Speichert man nun den Pfad nicht mit, ist die Eindeutigkeit bei gleichem Dateinamen nicht mehr gegeben, auch wenn das Quellverzeichnis ein ganz anderes ist.
|
AW: Datei in Zip Archiv
Nun ist das Problem, dass mit dem Pfad speichern die Komponete macht
Delphi-Quellcode:
Ich selber mache ja nichts mit dem Archiv-Pfad. Ich ändere nur den Pfad den er in die Listview eingetragen werden soll...
with fneu.zip do begin
if checkbox1.Checked = True then begin AddOptions := AddOptions + [AddDirNames]; ini.WriteBool('KOMPRESSION', 'AddDirNames', True); if checkbox1.Checked = false then begin AddOptions := AddOptions - [AddDirNames]; ini.WriteBool('KOMPRESSION', 'AddDirNames', false); |
AW: Datei in Zip Archiv
Was ist denn fneu? Und was hat das jetzt mit einer ListView zu tun? Ich verstehe Deinen Gedankengang nicht, sry.
|
AW: Datei in Zip Archiv
Fneu ist das Formular, auf dem sich die ZipMaster befindet.
Was das mit der Listview zutun hat ist ganz einfach : Wenn ich neue Dateien hinzufüge sollen die in der Listview eingetragen werden... und das mache ich hier
Delphi-Quellcode:
Ich wollte damit nur sicher stellen das niemand meint das ich damit den Pfad im Archiv ändere oder ähnliches.
if feinstellungen.checkbox1.Checked then begin
posi := pos('\',add.Files[i]); teilstring := copy(add.Files[i],posi+1); Item.SubItems.add(Extractfilename(lblpfad.Caption) + '/' + teilstring); end ELSE Item.SubItems.add(Extractfilename(lblpfad.Caption) + '/' + neudatei); |
AW: Datei in Zip Archiv
Aber der Fehler tritt doch ganz woanders auf. Nochmal: es kann in einem Archiv keine 2 Dateien gleichen Namens mit gleicher Pfadangabe geben. Du kannst in einem Verzeichnis ja auch keine 2 Dateien mit gleichem Namen anlegen. Das hat doch mit einer ListView herzlich wenig zu tun.
|
AW: Datei in Zip Archiv
Ja mit Listview ist mir klar :
Das problem: c:\tet.txt geht nicht weil es in c:\hallo\tet.txt die gleiche datei gibt // Die Datei brauch ja noch nicht mal im Archiv sein .. Das Archiv kann leer sein und wenn ich denn versuche die tet.txt einzufügen wenn es im unterordner auch eine tet.txt gibt kommt der Error. wenn ich aber versuche die c:\hallo\tet.txt einzufügen geht es.. Es ist etwas komplex |
AW: Datei in Zip Archiv
Das sag ich doch die ganze Zeit.
|
AW: Datei in Zip Archiv
Ja und wie behebe ich es?
|
AW: Datei in Zip Archiv
Was willst Du beheben? Dieses Verhalten ist "by design", die Erklärung dafür habe ich doch bereits gegeben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 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