![]() |
FileDeleter Problem
Hai,
ich versuche gerade einen FileDeleter zu schreiben, läuft auch schon ganz gut, doch ich weiß nicht wie ich Dateien löschen kann, die in einer ListBox als Dateipfad angezeigt werden... Also, wie kann ich Dateien löschen, von denen ich nur den Dateipfad habe? Gruß Philipp |
Re: FileDeleter Problem
|
Re: FileDeleter Problem
du hast nur den Dateipfad? du musst doch auch wissen welche Datei du löschen willst. Oder willst du alle Dateien unter dem Pfad löschen? dann müsstest du diese vorher auflisten (findfirst etc.) und dann die gefundenen löschen.
|
Re: FileDeleter Problem
Liste der Anhänge anzeigen (Anzahl: 1)
also, ich hänge euch mal nen kleinen screenshot an...
Ich fülle die ListBox durch Drag&Drop dateien hinzu, und wenn man auf DeleteFiles klickt sollen alle gelöscht werden, die in der ListBox sind... Hoffe ihr könnt mir weiterhelfen |
Re: FileDeleter Problem
du hast doch den dateinamen mit pfad. Gehe einfach mit einer Schleife alle einträge der Listbox durch und rufe damit DeleteFile auf.
|
Re: FileDeleter Problem
Sollte der Dateiname nicht im Ordnerpfad enthalten sein füge ihn hinzu, und dann lösche die Dateien per
![]() |
Re: FileDeleter Problem
Delphi-Quellcode:
Warum deleted er die Files nicht? Wo ist da der Fehler?
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer; begin for i := 0 to ListBox1.Items.Count - 1 do begin DeleteFile(ListBox1.Items[i]); end; end; |
Re: FileDeleter Problem
Moin mOzZzI,
DeleteFile ist eine Funktion, die Dir true oder false zurückliefert, je nachdem, ob das Löschen nun erfolgreich war oder nicht. Frag' doch mal mit
Delphi-Quellcode:
was schiefgegangen ist, wenn das Löschen fehlschlägt.
ShowMessage(SysErrorMessage(GetLastError));
|
Re: FileDeleter Problem
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
hab ein bisschen umgeformt...
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer; begin for i := 0 to ListView1.Items.Count - 1 do begin DeleteFile(ListView1.Items.???); end; end; Doch wie kann ich jetzt die Files löschen? Wenn ich ja, DeleteFile(ListView1.Items[i]) geht es ja nicht, da Inkomplatible Typen ListItem und String... Wie mache ich das jetzt? Neuer Screenie im Anhang |
Re: FileDeleter Problem
Du listest doch bestimmte Dateien in deiner Listview auf, oder? Bevor du die Dateien dort auflistest, solltest du dir die Namen bspw. in einer TStringList merken.
Wenn jetzt der Benutzer eine Datei aus deiner Listview auswählt und löschen will, suchst du (bspw. via ID) in deiner TStringList nach der entspr. Datei und löschst diese (DeleteFile(StringList1[ID]);. Anschließend solltest du natürlich die Datei aus der Stringliste und aus der Listview entfernen. Falls du das nicht willst, kannst du ja das Verzeichnis aus der Column "Pfad" lesen und den Dateinamen aus der Column "Filename" und das ganze zusammenstückeln. Besser finde ich jedoch obige Variante. Zum Befehl DeleteFile hast du ja schon einige Links genannt bekommen. |
Re: FileDeleter Problem
probier mal das:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer; begin for i := 0 to ListView1.Items.Count - 1 do begin DeleteFile(ListView1.Items.item[i].subitems[1]); end; end; |
Re: FileDeleter Problem
Nur ne kleine Anregung zu deinem Programm: Vielleicht solltest du vorsichtshalber noch ne Sicherheitsabfrage einbauen ob die Dateien wirklich gelöscht werden sollen einbauen, sonst könnte es zu bösen Überraschungen kommen. ;)
|
Re: FileDeleter Problem
du musst eben den Pfad von dem Item rausfinden und den Dateinamen und die beiden zusammenfügen und dann löschen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer; begin for i := 0 to ListView1.Items.Count - 1 do begin DeleteFile(ListView1.Items.item[i].caption (oder hieß die Eigenschaft TEXT?)+listview1.items.item[i].subitems[itemnummervondemitemmitdempfad].caption); end; end; |
Re: FileDeleter Problem
Egal, wie ich es mache, es klappt überhaupt nicht :wall:
Delphi-Quellcode:
Please Help, ich weiß nicht mehr weiter... :(
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer; begin for i := 0 to ListView1.Items.Count - 1 do begin DeleteFile(ListView1.Items.item[i].caption+listview1.items.item[i].subitems[??].caption); ) //ich hab ja keine subitems, ich habe Columns, bei mir ist der "PfadColumn" 2, aber das funzt nicht... end; end; |
Re: FileDeleter Problem
Du hast sehrwohl subitems. Du füllst deine Columns mit Text ja schließlich auch durch SubItems.Add. Ich nehme an, du hast außerdem den Backslash vergessen. Lass dir halt mal eine Meldung (ShowMessage) über den von dir generierten Dateinamen anzeigen. Dann siehst du ob es ein korrekter Dateiname ist, oder nicht.
Allerdings wie weiter oben geschrieben, würde ich persönlich so nicht vorgehen. |
Re: FileDeleter Problem
@ dahead
Wie würdest du vorgehen? Mit der Stringlist? Wie mache ich die? sry, aber davon hab ich kA Gruß Philipp |
Re: FileDeleter Problem
hast du schon meinen code probiert?
ich würde meinen, dieser müsste funktionieren. hier ist er nochmal:
Delphi-Quellcode:
oder:
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer; begin for i := 0 to ListView1.Items.Count - 1 do begin DeleteFile(ListView1.Items.item[i].subitems[1]); end; end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer; begin for i := 0 to ListView1.Items.Count - 1 do begin DeleteFile(ListView1.Items.item[i].subitems[1]+Listview1.items.item[i].caption); end; end; |
Re: FileDeleter Problem
Zitat:
Delphi-Quellcode:
müsste es sein, das wäre der Inhalt der ersten Spalte. Die weiteren bekommst du über subitems.
ListView1.Items[i].Caption
Edit: Ups, Seite 2 übersehen :oops: |
Re: FileDeleter Problem
Sehr vielen Dank an dich urbanbruhin!!
So hats funktioniert...
Delphi-Quellcode:
Noch eine Frage:
DeleteFile(ListView1.Items.Item[i].subitems[1]);
Delphi-Quellcode:
Ausdruckstypmuss BOOLEAN sein, aber wo denn?
procedure TForm1.Button3Click(Sender: TObject);
begin if if (MessageDlg('Please wait for a while when erasing selected/all data of the files.'+#13+#10+'Once they are deleted, they are never recovered.'+#13+#10+'Are you sure to delete them?', mtWarning, [mbYes, mbNo], 0) = mrYes) then begin DeleteFile(ListView1.Selected.subitems[1]); showmessage('File Deleted!'); ListView1.DeleteSelected; end else //not end; |
Re: FileDeleter Problem
Delphi-Quellcode:
Ohne das 2. if sollte es gehen.
procedure TForm1.Button3Click(Sender: TObject);
begin if (MessageDlg('Please wait for a while when erasing selected/all data of the files.' + #13+#10 + 'Once they are deleted, they are never recovered.' + #13+#10 + 'Are you sure to delete them?', mtWarning, [mbYes, mbNo], 0) = mrYes) then begin DeleteFile(ListView1.Selected.subitems[1]); showmessage('File Deleted!'); ListView1.DeleteSelected; end else //not begin end. end; Florian |
Re: FileDeleter Problem
upps, hab ich gar net gesehen :shock:
|
Re: FileDeleter Problem
oder mit ner listbox:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer; begin for i := 0 to ListBox1.Items.Count - 1 do begin DeleteFile(ListBox1.Items.strings[i]); <- lugg da end; end; |
Re: FileDeleter Problem
Christianb hat es auf der ersten Seite gesagt:
Zitat:
Die meisten Fehler im Code lassen sich sehr einfach beheben, wenn man sich einfach mal die Fehlermeldung von Windows ausgeben läßt. Und auch wenn man damit nicht direkt den Fehler findet, hat man meistens einen Anhaltspunkt was da schiefläuft. Und man hat gleichzeitig eine Meldung für den Benutzer, wenn eben ein Fehler aufgetreten ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 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