Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen (https://www.delphipraxis.net/167152-bestimmte-dateien-und-verzeichnise-einem-stammverzeichnis-loeschen.html)

t0mmy 15. Mär 2012 14:12

Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen
 
Kann mir da jemand weiter helfen?

Also ich will 2-Listboxen durchen und die jeweiligen Verzeichnisse und Files in einem Stammverzeichnis löschen.
Wie finde ich z.B: alle *.txt datei und kann diese löschen.

Weiters... wie such ich bestimmte Ordner auch wenn sie im Unterverzeichnissen drinnen sind.

DeddyH 15. Mär 2012 14:52

AW: Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen
 
FindFirst, FindNext sind Dein Freund. Oder Du installierst Dir meine Komponente TFileSearcher, dann musst Du das nicht selber erledigen.

Popov 15. Mär 2012 14:59

AW: Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen
 
Da ich zufällig ein Projekt offen habe in dem sich diese Funktion befindet:

Delphi-Quellcode:
procedure GetFileList(Path, Ext: String; List: TStrings);
const
  Attrib = faArchive + faReadOnly + faHidden;
var
  Search: TSearchRec;
begin
  if Path[Length(Path)] <> '\' then Path := Path + '\';

  if FindFirst(Path + '*' + Ext, Attrib, Search) = 0 then
  repeat
    List.Add(Path + Search.Name);
  until FindNext(Search) <> 0;

  FindClose(Search);
end;

DeddyH 15. Mär 2012 15:12

AW: Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen
 
Ganz so einfach ist es wohl nicht, Rekursion fehlt z.B., man addiert keine Bitmasken, Du prüfst nicht auf Länge 0 usw.

Popov 15. Mär 2012 15:36

AW: Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen
 
Zitat:

Zitat von DeddyH (Beitrag 1156729)
Ganz so einfach ist es wohl nicht, Rekursion fehlt z.B., man addiert keine Bitmasken, Du prüfst nicht auf Länge 0 usw.

Ich habe mal vor Jahren den Fehler gemacht mich bei genau dieser Funktion auf eine Diskussion einzulassen, die von der anderen Seite vereinfacht ausgedrückt so lautete: deine Funktion ist falsch, auch wenn sie aus der OH geradezu abgetippt ist. Auch wenn es in der OH so steht ist es ganz anders gemeint. Denn wenn man deine Funktion nimmt und der Anton ein Bier trinkt, dann könnte das passieren. Also studiere vorher die API wie es gemeint ist usw.

Im OH Beispiel wird auch addiert und nicht auf Länge 0 geprüft usw. Wenn das Beispiel falsch ist, dann biegt der Fehler bei Borland bzw. Nachfolger.

Was die Rekursion angeht, ok, wie gesagt, ich habe diese Funktion so aus meinem Projekt kopiert und da brauche ich es nicht. :?

DeddyH 15. Mär 2012 15:37

AW: Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen
 
Soll heißen: wenn Du ein Beispiel liest, das suboptimal programmiert ist, übernimmst Du es, weil es ja von Borland/Inprise/CodeGear/Embarcadero stammt? Interessante Einstellung.

Popov 15. Mär 2012 15:52

AW: Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen
 
Ja!

Wie schon gesagt: ich habe mal den Fehler begangen mich schon mal bei dieser Funktion auf eine Diskussion einzulassen. Derjenige konnte gut meckern, konnte aber keine Zeile Verbesserung anfügen.

Ok, gehen wir mal die Sache anders an: ich programmiere mit Delphi, damit ich mich um den Sch... mit API & Co. nicht kümmern muß. Ich nutze die API wenn Delphi selbst eine Funktion nicht liefert. Wenn Delphi eine Funktion liefert, dann kann ich davon ausgehen, dass sie richtig ist. Warum? Weil ich paar hundert Euro dafür ausgegeben habe. Ich kann davon ausgehen, dass alle Fallstricke, also Punkte die ich beachten soll, in der OH vermerkt sind. Und da lasse ich mich mit Kommentaren wie "Interessante Einstellung" nicht als Idioten hinstellen, weil ich die Sprache so nutze wie es in der OH empfohlen wird. Wenn du auf dem Standpunkt stehst, dass das alles Idioten bei Borland waren und du es besser machst, dann akzeptiere ich das als deine Meinung. Aber lasse bitte davon ab andere da rein zu ziehen.

Luckie 15. Mär 2012 16:00

AW: Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen
 
Auch die Leute von Borland waren nicht unfehlbar.

DeddyH 15. Mär 2012 16:01

AW: Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen
 
Delphi-Quellcode:
procedure GetFileList(Path, Ext: String; List: TStrings);
const
  Attrib = faArchive or faReadOnly or faHidden;
var
  Search: TSearchRec;
begin
  Assert(Assigned(List));
  Path := IncludeTrailingPathDelimiter(Path);
  //Delphi vor der Kylix-Ära:
  //Path := IncludeTrailingBackslash(Path);

  if FindFirst(Path + '*' + Ext, Attrib, Search) = 0 then
    try
      repeat
        List.Add(Path + Search.Name);
      until FindNext(Search) <> 0;
    finally
      FindClose(Search);
    end;
end;
Ein paar klitzkleine Änderungen, und das wird viel stabiler. Aber bitte, Du musst das ja nicht übernehmen.

p80286 15. Mär 2012 16:39

AW: Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen
 
Warum die Gifterei?
bekommt Euch die Sonne nicht?
Vielleicht wäre es besser gewesen,gleich zu sagen, daß sich hinter faReadonly und Konsorten Bits stecken, die gesetzt werden oder eben nicht gesetzt werden, und darum kann das Addieren gut gehen, aber genauso gut kann es daneben gehen, darum sollte man es sich garnicht angewöhnen.
(Aber If-Schleifen am besten noch mit if a=true sind ja auch nicht auszurotten)

@Detlef
Jetzt hast Du aber auch die Längenprüfung für den Path unter den Tisch fallen lassen?

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.
Seite 1 von 3  1 23      

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