Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ordner löschen (https://www.delphipraxis.net/103504-ordner-loeschen.html)

Seppel 16. Nov 2007 16:56


Ordner löschen
 
Hi,

Ich will einen Ordner löschen, aber gewisse unter Ordner nicht, diese liest er aus nem edit Feld aus, also den Namen und dann löscht er sie net, also noch gehts nicht^^.
Deswegen meine Frage wie geht das?

Delphi-Quellcode:
RemoveDir// das weiß ich.^^

DeddyH 16. Nov 2007 16:58

Re: Ordner löschen
 
Hol tief Luft und dann stell die Frage noch einmal so, dass ich sie auch verstehe. Welcher Unterordner z.B.

Seppel 16. Nov 2007 17:00

Re: Ordner löschen
 
ok.^^
Also ich sags so ich möchte alles in einem Ordner löschen, kann aber definniern was nicht gelöscht wird.
(z.B. im Ordner Bla sind 5 Ordner und alle außer 1 und 2 dürfen gelöscht werden)

Jetzt verstanden?, ja sry falsch formuliert^^

DeddyH 16. Nov 2007 17:03

Re: Ordner löschen
 
Wenn die Tiefe der zu löschenden Unterordner beliebig sein soll, wirst Du um eine Rekursion schwerlich herumkommen. Bedenke zudem, dass Du nur leere Ordner löschen kannst. Das heißt also, dass Du die Unterverzeichnisse durchlaufen und dort alle Dateien löschen musst. Stößt Du auf ein Unterverzeichnis, tust Du dort dasselbe.

Seppel 16. Nov 2007 17:05

Re: Ordner löschen
 
Ok, gut also es gibt ja einen Ordner darin sind Unterodner aber in denen selber sind höchstens Datein.

DeddyH 16. Nov 2007 17:08

Re: Ordner löschen
 
Gut, dann wirst Du das Dreigespann FindFirst, FindNext, FindClose anwenden müssen. Beispiele findest Du bestimmt über die Forensuche. Falls Du nicht klarkommst, melde Dich nochmal.

Seppel 16. Nov 2007 17:13

Re: Ordner löschen
 
http://www.dsdt.info/tipps/?id=68
Hab da das gefunden im Web, wenn ich im Forumsuche finde ich immer so viel.
Nur wie kann ich jetzt machen, dass es gewisse Ornder nicht löscht.

BeispieL:
Ich hab ne Datenbank, da stehen User drinne und man kann bei denen Bilder sehen.
Wenn die gelöscht werden, dann mache ich das so, dass bei beginn des PRogramms alles außer den Usern die in der DB sind gelöscht werden, also ein Vergleich und der rest muss weg.
Ist das so besser um ne Lösung zu finden, so kann man ja auch einen Vergleich machen, alles was net in der DB ist wird gelöscht.(Also z.B. C:/DB/User/ darin sind dann den Usern ihre Pics, wobei jeder User einen eigenen Ordner hat, z.B. Frank und wenn Frank gelöscht wird soll beim Start des Programms auch der Ordner gelöscht werden.

Nuclear-Ping 16. Nov 2007 17:22

Re: Ordner löschen
 
In einer Liste (Delphi Hilfe: TStringList) die nicht zu löschenden Ordner eintragen und dann vor jedem löschen erstmal den Namen bzw. Pfad des Ordners aus der Liste vergleichen, fertig.

Seppel 16. Nov 2007 17:26

Re: Ordner löschen
 
Zitat:

Zitat von Nuclear-Ping
In einer Liste (Delphi Hilfe: TStringList) die nicht zu löschenden Ordner eintragen und dann vor jedem löschen erstmal den Namen bzw. Pfad des Ordners aus der Liste vergleichen, fertig.

Gut, ich trag also die wichtigen einund wie lösche ich die dann net??
http://www.dsdt.info/tipps/?id=68 Das hier löscht alles und mit dem Vergleich weiß ich jetzt net so recht.

Delphi-Quellcode:
if DeleteFile('c:\DB\') then
//ergleiche muss ich das ja dann mit der Liste... Das eintragen darein ist net das Problem, nur das vergleichen...Also muss ich wahrscheinlich auch erst ma alles darin auslesen oder?? und dann vergleichen.
Danke. :coder2:

DeddyH 16. Nov 2007 17:34

Re: Ordner löschen
 
Evtl. so (vorsichtig beim Ausprobieren!!):
Delphi-Quellcode:
function DeleteDirRecursive(sPath: string; DoNotDelete: TStrings): Boolean;
var Rec: TSearchRec;
begin
  if not DirectoryExists(sPath) then
    begin
      Result := false;
      exit;
    end;
  sPath := IncludeTrailingPathDelimiter(sPath);
  if FindFirst(sPath + '*.*',faAnyFile,Rec) = 0 then
    begin
      repeat
        if (Rec.Attr and faDirectory) = faDirectory then
          begin
            if (Rec.Name <> '.') and (Rec.Name <> '..') and
               (*Vorsicht!! Man muss sich einig sein, wie man die
                 Verzeichnisnamen einträgt (ganzer Pfad oder nicht,
                 groß oder klein geschrieben etc.) *)
               (DoNotDelete.IndexOf(Rec.Name) < 0) then
              DeleteDirRecursive(sPath + Rec.Name,nil);
          end
        else
          DeleteFile(sPath + Rec.Name);
      until FindNext(Rec) <> 0;
      FindClose(Rec);
    end;
  Result := RemoveDir(sPath);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 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