AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

bestimmte Datein in Ordner löschen

Ein Thema von The Lord · begonnen am 16. Sep 2006 · letzter Beitrag vom 20. Sep 2006
Antwort Antwort
The Lord

Registriert seit: 19. Sep 2005
Ort: Dortmund
125 Beiträge
 
Turbo Delphi für Win32
 
#1

bestimmte Datein in Ordner löschen

  Alt 16. Sep 2006, 18:33
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
Alexander
Dunkel die andere Seite ist...
Klappe Yoda und iss deinen Toast!
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#2

Re: bestimmte Datein in Ordner löschen

  Alt 16. Sep 2006, 18:39
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.
Servus...
  Mit Zitat antworten Zitat
The Lord

Registriert seit: 19. Sep 2005
Ort: Dortmund
125 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: bestimmte Datein in Ordner löschen

  Alt 16. Sep 2006, 18:41
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
Alexander
Dunkel die andere Seite ist...
Klappe Yoda und iss deinen Toast!
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: bestimmte Datein in Ordner löschen

  Alt 16. Sep 2006, 18:44
Erstmal alle Dateien des Ordners in einer StringList auflisten (Hier im Forum suchenFindFirst), dann die gewünschten Ausnahmen aus der Liste entfernen und die in der Liste stehenden Dateien löschen.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
The Lord

Registriert seit: 19. Sep 2005
Ort: Dortmund
125 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: bestimmte Datein in Ordner löschen

  Alt 19. Sep 2006, 11:56
ich hab noch diese funktion gefunden. die müsste mir eigentlich helfen (Link). aber wie wende ich die an?
Alexander
Dunkel die andere Seite ist...
Klappe Yoda und iss deinen Toast!
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#6

Re: bestimmte Datein in Ordner löschen

  Alt 19. Sep 2006, 11:59
Oben steht welche unit du dazu brauchst, die müsstest du dir erstmal besorgen, sieht nach JVCL aus, sprich Jedis
Servus...
  Mit Zitat antworten Zitat
The Lord

Registriert seit: 19. Sep 2005
Ort: Dortmund
125 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: bestimmte Datein in Ordner löschen

  Alt 19. Sep 2006, 13:53
Kann ich zwei Listen auf diese Art und Weise vergleichen?


Delphi-Quellcode:

  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] := '#';
Die restlichen Dateinamen würde ich dann löschen.

Ich brauche nämlich eine Art Schnittmenge. Gelten hierbei auch die Mengenoperatoren?
Alexander
Dunkel die andere Seite ist...
Klappe Yoda und iss deinen Toast!
  Mit Zitat antworten Zitat
The Lord

Registriert seit: 19. Sep 2005
Ort: Dortmund
125 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: bestimmte Datein in Ordner löschen

  Alt 19. Sep 2006, 18:02
Die Operatoren funktionieren anscheinend nicht. Wie kann man es dann machen? Doch nur die einzelnen Elemente untereinander vergleichen?

Gruß
Alexander
Dunkel die andere Seite ist...
Klappe Yoda und iss deinen Toast!
  Mit Zitat antworten Zitat
The Lord

Registriert seit: 19. Sep 2005
Ort: Dortmund
125 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: bestimmte Datein in Ordner löschen

  Alt 20. Sep 2006, 11:32
Habe zu Testzwecken mal etwas geschrieben, aber warum funktioniert es nicht?

Delphi-Quellcode:

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;
Es passiert folgendes:

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.
Alexander
Dunkel die andere Seite ist...
Klappe Yoda und iss deinen Toast!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 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