AGB  ·  Datenschutz  ·  Impressum  







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

Probleme beim Löschen eines Ordners

Ein Thema von Helmi · begonnen am 14. Nov 2004 · letzter Beitrag vom 14. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Probleme beim Löschen eines Ordners

  Alt 14. Nov 2004, 13:08
Hallo,

ich brauch dringenst eure Hilfe. Ich renn dauernd gegen die Wand

Ich will mit "deleteDir" einen Ordner löschen.

Das geht auch, aber nur wenn der Ordner nie einen Inhalt hatte.

Wenn der Ordner zuvor einen Inhalt hatte (bei mir nur immer eine Datei - die ich vor dem Löschen des Ordners gelöscht hab), dann gibt mir deleteDir immer ein false zurück.

Über FindFirst, FindNext hab ich mal diesen Ordner durchsuchen lassen und hab rausgefunden, dass folgende "Dateien" noch im Ordner vorhanden sind: ".", ".." und "thumbs.db".

Wenn ich aber in den Windows-Explorer schau, dann sagt der dass der ordner leer ist (0 Elemente).

Wie kann ich also diesen Ordner löschen?

hier mal ein wenig Code (aus meinem Test-Programm):

Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
  CheckBox1.Checked := RemoveDir(Edit1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  CheckBox2.Checked  := deleteFile(Edit2.Text);
  Button1.Enabled := CheckBox2.Checked;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  sr: TSearchRec;
  FileAttrs: Integer;

begin
  FileAttrs := 0;

  FileAttrs := FileAttrs + faHidden;
  FileAttrs := FileAttrs + faSysFile;
  FileAttrs := FileAttrs + faVolumeID;
  FileAttrs := FileAttrs + faDirectory;
  FileAttrs := FileAttrs + faArchive;
  FileAttrs := FileAttrs + faAnyFile;

  If FindFirst(Edit1.Text + '\*.*', FileAttrs, sr) = 0 then
    begin
      repeat
        if (sr.Attr and FileAttrs) = sr.Attr then
        begin
          showmessage(sr.Name);
          showmessage(IntToStr(ord(deletefile(sr.Name))));
        end;
      until FindNext(sr) <> 0;
      FindClose(sr);
    end;
end;
Button1 ist enabled = false
CheckBox1 und 2 dienen nur als anzeige ob true oder falsch

ach ja, thumbs.db lässt sich nicht löschen (siehe repeat-schleife)

mfg
Helmi
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Probleme beim Löschen eines Ordners

  Alt 14. Nov 2004, 13:11
Hi Helmi,

lass dir mal im Windows Explorer auch versteckte Dateien anzeigen, dann siehst du auch die Thumbs.db. Versuch anschließend, diese manuell zu löschen und anschließend den Ordner von deinem Programm aus zu löschen.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Probleme beim Löschen eines Ordners

  Alt 14. Nov 2004, 13:12
hallo

ich hab mir im win-explorer auch die versteckten dateien anzeigen lassen und eigenartigerweise war thumbs.db auch nicht zum sehen
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Probleme beim Löschen eines Ordners

  Alt 14. Nov 2004, 13:14
Hi Helmi,

es könnte sein dass die Datei auch als Systemdatei eingestellt ist. Dies musst du auch in den Ordneroptionen einstellen. Bei mir wird die Datei jedenfalls angezeigt.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Probleme beim Löschen eines Ordners

  Alt 14. Nov 2004, 13:22
ich hab jetzt meinen fehler gefunden warum ich die thumbs.db nicht löschen konnte

hier der "verbesserte Code":
Code:
procedure TForm1.Button3Click(Sender: TObject);
var
  sr: TSearchRec;
  FileAttrs: Integer;

begin
  FileAttrs := 0;

  FileAttrs := FileAttrs + faHidden;
  FileAttrs := FileAttrs + faSysFile;
  FileAttrs := FileAttrs + faVolumeID;
  FileAttrs := FileAttrs + faDirectory;
  FileAttrs := FileAttrs + faArchive;
  FileAttrs := FileAttrs + faAnyFile;

  If FindFirst(Edit1.Text + '\*.*', FileAttrs, sr) = 0 then
    begin
      repeat
        if (sr.Attr and FileAttrs) = sr.Attr then
        begin
          showmessage(sr.Name);
          showmessage(IntToStr(ord(deletefile(Edit1.Text + '\' + sr.Name))));
        end;
      until FindNext(sr) <> 0;
      FindClose(sr);
    end;
end;
Jetzt ist zwar der Ordner bis auf "." und ".." leer, aber löschen kann ich ihn immer noch nicht

  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Probleme beim Löschen eines Ordners

  Alt 14. Nov 2004, 13:24
Das ist kein Wunder: . und .. sind virtuelle Ordner, die ins übergeordnete bzw. ins eigene Verzeichnis verweisen. Die zu löschen ist unmöglich, da sie nicht existieren.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Probleme beim Löschen eines Ordners

  Alt 14. Nov 2004, 13:27
na aber dann ist die procedure deleteDir vollkommen nutzlos wenn man einen leeren Ordner nie löschen kann wegen den "." und ".."

oder gibts ne ne möglichkeit?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#8

Re: Probleme beim Löschen eines Ordners

  Alt 14. Nov 2004, 13:29
Wie gesagt, "." und ".." sind nur logische Links, wenn ausser denen im Verzeichnis nichts existiert, muss es löschbar sein.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Probleme beim Löschen eines Ordners

  Alt 14. Nov 2004, 13:30
leider nein - oder ich mach was falsch
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Probleme beim Löschen eines Ordners

  Alt 14. Nov 2004, 13:33
Moin Helmi,

Angaben wie die Attribute sollte man nicht mit + verknüpfen sondern mit OR, also statt

Delphi-Quellcode:
  FileAttrs := FileAttrs + faHidden;
  FileAttrs := FileAttrs + faSysFile;
  // usw.
solltest Du

Delphi-Quellcode:
  FileAttrs := FileAttrs or faHidden;
  FileAttrs := FileAttrs or faSysFile;
  // usw.
verwenden.
Wenn Du mal nach Hier im Forum suchenfaAnyFile suchst solltest Du dazu einen recht aktuellen Thread mit einer näheren Erklärung finden.

Um herauszubekommen warum Du den Ordner nicht löschen kannst, solltest Du Dir mal die Ursache anzeigen lassen.
Nach dem fehlgeschlagenen Löschversuch einfach mal
ShowMessage(SysErrorMessage(GetLastError));
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:44 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