![]() |
bestimmte Datein in Ordner löschen
Hallo ich habe ein Problem. Ich denke ihr könnt mir helfen :)
Ich will bestimmte Dateien aus einem Ordner löschen. Es gibt Datein, die sollen erhalten bleiben. Dann habe ich mir überlegt, dass ich die Ausnahmen kopieren in ein temporäres Verzeichnis könnte, dann den gesamten Ordner löschen und am Ende die temporär gespeicherten Dateien wieder zurück in den Ordner zurückverschieben könnte. Hab es ausprobiert und es funktioniert! Jedoch habe ich folgendes Problem: Wobei ich beim testen und überlegen nicht gedacht habe ist, dass die Datein die verschoben werden müssen fast 4GB groß sind. Das ist auf jeden Fall zu viel, weil das temporärer zu verschieben braucht sehr viel Speicherplatz und Zeit! Wie kann ich es am besten lösen? Vielleicht kann man eine Liste der Dateinamen erstellen, die Ausnahmen herausfiltern und die restlichen Datein löschen? Gruß, Der Lord |
Re: bestimmte Datein in Ordner löschen
Das mit der Liste ist schonmal gut, aber wichtiger wäre es zu wissen, nach welche kriterien du die Dateien löscht, dann bruachst du nur eine Liste mit den zu löschenden Dateien.
|
Re: bestimmte Datein in Ordner löschen
Es ist eigentlich eine feste Anzahl der Datein.
Quasi Datei a,b,c...,z (z.B.) Und alle anderen sollen gelöscht werden. Aber wie setze ich die theoretische Überlegung um? Das ist ja mein Problem ;) |
Re: bestimmte Datein in Ordner löschen
Erstmal alle Dateien des Ordners in einer StringList auflisten (
![]() Florian |
Re: bestimmte Datein in Ordner löschen
ich hab noch diese funktion gefunden. die müsste mir eigentlich helfen (
![]() |
Re: bestimmte Datein in Ordner löschen
Oben steht welche unit du dazu brauchst, die müsstest du dir erstmal besorgen, sieht nach JVCL aus, sprich Jedis
|
Re: bestimmte Datein in Ordner löschen
Kann ich zwei Listen auf diese Art und Weise vergleichen?
Delphi-Quellcode:
Die restlichen Dateinamen würde ich dann löschen.al:=liste.count; aj:=ja_liste.count; for i := 1 to al do for j := 1 to aj do if liste[i] = ja_liste[j] then liste[i] := '#'; Ich brauche nämlich eine Art Schnittmenge. Gelten hierbei auch die Mengenoperatoren? |
Re: bestimmte Datein in Ordner löschen
Die Operatoren funktionieren anscheinend nicht. Wie kann man es dann machen? Doch nur die einzelnen Elemente untereinander vergleichen?
Gruß |
Re: bestimmte Datein in Ordner löschen
Habe zu Testzwecken mal etwas geschrieben, aber warum funktioniert es nicht?
Delphi-Quellcode:
Es passiert folgendes:procedure TForm1.FormCreate(Sender: TObject); var i, j, al, aj : integer; liste, ja_liste, del_liste, ok_liste : TStringList; begin liste:=TStringList.Create; ja_liste:=TStringList.Create; del_liste:=TStringList.Create; ok_liste:=TStringList.Create; liste.Add(''); liste.Add('a'); liste.Add('b'); liste.Add('d'); liste.Add('r'); liste.Add('x'); liste.Add('a'); liste.Add('c'); liste.Add('b'); liste.Add('c'); ja_liste.Add(''); // ja_liste.Add('a'); // Falls mehr als ein Objekt hier steht, funktionert das Ganze nicht mehr ja_liste.Add('x'); al:=liste.count; aj:=ja_liste.count; ShowMessage (IntToStr(al)+';'+IntToStr(aj)); // Zur Überprüfung, wie lang die Listen sind for i := 1 to al-1 do for j := 1 to aj-1 do if liste[i] = ja_liste[j] then ok_liste.Add(liste[i]) else del_liste.Add(liste[i]); Memo1.Lines:=ok_liste; Memo2.Lines:=del_liste; end; Ich habe die zwei Listen. Einmal eine Liste von Strings die vorkommen (liste) und eine in der die erlaubten Strings stehen (ja_liste). In Memo1 wird mir am Ende die Liste der erlaubten Strings angezeigt, in Memo2 sollen eigentlich die Strings angezeigt werden, die herausgenommen werden. Wenn die Liste ja_liste aus nur nur z.B. 'a' besteht funktioniert das ganze wunderbar. Nur sobald mehr vorkommen, gibt es einen Fehler mit der Zähschleife. Dann wir viel zu viel und falsches Ausgegeben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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