Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datei in einer zip löschen (https://www.delphipraxis.net/149445-datei-einer-zip-loeschen.html)

-Phantom- 21. Mär 2010 17:29


Datei in einer zip löschen
 
Hey Leute,

Ich bin ja grade dabei einen "Entpacker" zu programmieren. Ich hab es nun so gemacht das man eine .zip öffnen kann und dann können die Inhalte angezeigt werden. Nun wollte ich es so machen das einzelne Dateien gelöscht werden können. Mein
versuch:
Delphi-Quellcode:
procedure TForm2.sBitBtn6Click(Sender: TObject);
var
i : Integer;
begin
with slistview1 do
 for i := 0 to Items.Count - 1 do
if Items[i].Selected then
begin
abzipper1.OpenArchive(openarchive);
delepf := items[i].SubItems[0]; // der Pfad z.B C:\blala....
abzipper1.DeleteFiles(delepf);
abzipper1.CloseArchive;
end;
slistview1.Selected.Delete;
end;

end.
Wisst ihr was ich falsch mache?
// das Problem ist das die Datei immer noch vorhanden ist

DeddyH 21. Mär 2010 17:35

Re: Datei in einer zip löschen
 
Ja, Du formatierst Deinen Code nicht und verschweigst uns die Fehlermeldung. Ich vermute, DeleteFiles will einen TStrings-Abkömmling als Parameter.

mkinzler 21. Mär 2010 17:37

Re: Datei in einer zip löschen
 
Und versuche auf globale variablen zu verzichten

-Phantom- 21. Mär 2010 17:48

Re: Datei in einer zip löschen
 
@daddyh

Ich bekomme keine Fehlermeldung ?!

und wie formatiere ich mein code den richtig?

DeddyH 21. Mär 2010 18:02

Re: Datei in einer zip löschen
 
Wie man Code formatieren sollte, kannst Du im StyleGuide nachlesen. Und zum Problem: ist das Abbrevia? Falls ja, sind da IIRC auch Demos dabei, da könntest Du spicken.

-Phantom- 21. Mär 2010 18:32

Re: Datei in einer zip löschen
 
Ja es ist die Komponente, aber ich finde in den Demos nichts verwendbares

mkinzler 21. Mär 2010 18:55

Re: Datei in einer zip löschen
 
Das ZipView Beispiel sollte aber hilfreich sein :zwinker:

-Phantom- 21. Mär 2010 19:21

Re: Datei in einer zip löschen
 
hab das hier gefunden
Delphi-Quellcode:
procedure TForm1.Delete1Click(Sender: TObject);
var
  i : Longint;
begin
  Panel1.Caption := '';
  with AbZipView1 do
    for i := 0 to Pred(Count) do
      Items[i].Tagged := Selected[i];
  AbZipKit1.DeleteTaggedItems;
  Panel1.Caption := '';
end;
Aber Problem: ich benutze nicht die AbzipView1 sonder die listview1 und die hat kein "tagged".
Geht das auch mit der normalen listview?

cookie22 21. Mär 2010 20:51

Re: Datei in einer zip löschen
 
Zitat:

Zitat von -Phantom-
hab das hier gefunden
Delphi-Quellcode:
procedure TForm1.Delete1Click(Sender: TObject);
var
  i : Longint;
begin
  Panel1.Caption := '';
  with AbZipView1 do
    for i := 0 to Pred(Count) do
      Items[i].Tagged := Selected[i];
  AbZipKit1.DeleteTaggedItems;
  Panel1.Caption := '';
end;
Aber Problem: ich benutze nicht die AbzipView1 sonder die listview1 und die hat kein "tagged".
Geht das auch mit der normalen listview?

du mußt halt deine markierten items abfragen. was für eine komponente benutzt du überhaupt?

mkinzler 21. Mär 2010 20:55

Re: Datei in einer zip löschen
 
Zitat:

was für eine komponente benutzt du überhaupt?
Wie in #5/#6 zu lesen ist TurboPower Abbrevia

-Phantom- 21. Mär 2010 21:15

Re: Datei in einer zip löschen
 
@cookie
mach ich doch hier
Delphi-Quellcode:
begin
with slistview1 do
for i := 0 to Items.Count - 1 do
if Items[i].Selected then
begin
abzipper1.OpenArchive(openarchive);
delepf := items[i]..SubItems[0];
oder nicht?
:?:

mkinzler 21. Mär 2010 21:18

Re: Datei in einer zip löschen
 
Man kann aber nicht unbedingt davon ausgehen, das die Indizes der beiden Listen identisch sind

cookie22 21. Mär 2010 21:32

Re: Datei in einer zip löschen
 
gib es da nicht ne list die man befüllen kann? so kenn ich das von delzip, zipforge oder ziptv. ansonsten mußt du die datei namen abgleichen.

-Phantom- 21. Mär 2010 22:18

Re: Datei in einer zip löschen
 
Ja in der Komponente gibt es ne Abzipview. Aber ich benutze eine ganz normale Listview und möchte das auch beibehalten. Wie mache ich das den nun mit der ganz normalen Listview?

mkinzler 21. Mär 2010 22:20

Re: Datei in einer zip löschen
 
Du musst den passenden Eintrag suchen

-Phantom- 22. Mär 2010 17:48

Re: Datei in einer zip löschen
 
Ja wo den?

-Phantom- 23. Mär 2010 15:42

Re: Datei in einer zip löschen
 
Keiner ne Idee? Ich hab das gleiche Problem auch wenn ich Dateien die sich noch in der zip befinden ausführen will.
Wie muss ich das machen?

-Phantom- 23. Mär 2010 15:52

Re: Datei in einer zip löschen
 
das mit dem Ausführen hab ich nun hinbekommen
Delphi-Quellcode:
var
runfile : String;
i : Integer;
begin
for i := 0 to slistview1.Items.Count -1 do
begin
if slistview1.Items[i].Selected then
begin
abunzipper1.FileName := openpf;
abunzipper1.BaseDirectory := extractfilepath(openpf);
runfile := extractfilepath(openpf)+slistview1.Items[i].Caption;
abunzipper1.ExtractFiles(runfile);
abunzipper1.OpenArchive(openpf);
shellExecute(0,
        Nil,
        PChar(runfile),
        Pchar(''),
        Pchar('C:\StartDir'),
        SW_NORMAL);
        label2.Caption := runfile;
        end;
end;
end;

cookie22 23. Mär 2010 16:35

Re: Datei in einer zip löschen
 
Zitat:

Zitat von -Phantom-
das mit dem Ausführen hab ich nun hinbekommen
Delphi-Quellcode:
var
runfile : String;
i : Integer;
begin
for i := 0 to slistview1.Items.Count -1 do
begin
if slistview1.Items[i].Selected then
begin
abunzipper1.FileName := openpf;
abunzipper1.BaseDirectory := extractfilepath(openpf);
runfile := extractfilepath(openpf)+slistview1.Items[i].Caption;
abunzipper1.ExtractFiles(runfile);
abunzipper1.OpenArchive(openpf);
shellExecute(0,
        Nil,
        PChar(runfile),
        Pchar(''),
        Pchar('C:\StartDir'),
        SW_NORMAL);
        label2.Caption := runfile;
        end;
end;
end;

du solltest um dateien auszuführen ins temp verzeichnis von windows entpacken.

Zitat:

Zitat von -Phantom-
...und wie formatiere ich mein code den richtig?

wenn du deinen code nicht selbst formatieren magst, schau mal hier:
http://www.aew.wur.nl/UK/Delforexp/

-Phantom- 10. Apr 2010 17:50

Re: Datei in einer zip löschen
 
Ich habe es nun auch geschafft die Dateien zulöschen...
Delphi-Quellcode:
 
var
filesource, filedest,datei, d2,filen: String;
i : Integer;
begin
// bei vista öffnen
if (windowsversion = '6.0') and (slabel1.Caption = 'Öffnen') then begin
filesource := openpf;
createdir('C:\Program Files\Ultimate Zip\temp2\');
filen := 'C:\Program Files\Ultimate Zip\temp2\';
filedest := 'C:\Program Files\Ultimate Zip\temp2\'+Extractfilename(openpf);
CopyFile(PChar(fileSource), PChar(fileDest), True);
abzipper1.CloseArchive;
abunzipper1.CloseArchive;
deletefile(openpf);
abunzipper1.FileName := filedest;
abunzipper1.BaseDirectory := Extractfilepath(filedest);
abunzipper1.ExtractFiles('*.*');
abunzipper1.CloseArchive;
abzipper1.CloseArchive;
deletefile(filedest);
for i := 0 to slistview1.Items.Count -1 do
begin
if slistview1.Items[i].Selected then begin
datei := StringReplace(slistview1.Items[i].Caption,'/','\',[rfReplaceAll]);
d2 := filen+Extractfilename(datei);
label2.Caption := d2;
deletefile(d2);
zz2(openpf);
DeleteFile('C:\Program Files\Ultimate Zip\temp2\*.*');
slistview1.Items.Delete(i);
end;
end;
// ist nicht grade Elegant gelöst, aber gelöst


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 Uhr.

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