AGB  ·  Datenschutz  ·  Impressum  







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

Verzeichnisse löschen

Ein Thema von luckystar85 · begonnen am 14. Feb 2005 · letzter Beitrag vom 14. Feb 2005
Antwort Antwort
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#1

Verzeichnisse löschen

  Alt 14. Feb 2005, 11:52
Ich lege in meinen Programm ein temp.-Verzeichnis an. Das sollte sobald ich es nicht mehr brauche auch gelöscht werden. Das mache ich mit

Delphi-Quellcode:
function loesche_Verzeichnis(Verzeichnis : string): boolean;
var
  fos : TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  fos.Wnd := Application.Handle;
  fos.wFunc := FO_DELETE;
  fos.fFlags := FOF_NOERRORUI or FOF_SILENT or FOF_NOCONFIRMATION;
  fos.pFrom := PChar(Verzeichnis+#0);
  Result := SHFileOperation(fos) = 0;
end;

Aufruf:
if (not loesche_Verzeichnis(Verzeichnis_zippen.ExtrBaseDir)) then
    ShowMessage('Das Verzeichnis konnte nicht gelöscht werden');
Das Verzeichnis wird nicht gelöscht. Wenn ich mir mit GetLastError den Fehler hole kommt "Das Handle ist ungültig". Woran könnte das liegen?
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Verzeichnisse löschen

  Alt 14. Feb 2005, 11:59
fos.Wnd := Application.Handle; //<<-- HINSTANCE Solltest du nicht so schreiben:
fos.Wnd := Form1.Handle; ///<<------ HWND
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Verzeichnisse löschen

  Alt 14. Feb 2005, 13:03
Funktoniert leider auch nicht.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

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

Re: Verzeichnisse löschen

  Alt 14. Feb 2005, 13:07
Hallo luckystar85,

warum versuchst du es nicht mit MSDN-Library durchsuchenRemoveDirectory? Das Verzeichnis muss zwar leer sein, aber Dateien und Verzeichnisse rekursiv löschen dürfte wohl auch keine Schwierigkeit darstellen
Und so wie ich das gesehen habe, geht TSHFileOperation nicht für Verzeichnisse, sondern nur für Dateien. Ich kann mich da aber auch irren.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Verzeichnisse löschen

  Alt 14. Feb 2005, 13:15
Tust du, alca. SHFileOperation ist die gleiche Methode, die auch der Explorer zum Löschen, Verschieben, Kopieren und Umbenennen benutzt. Und der kann ganze Ordner ausradieren. Und im Gegensatz zu RemoveDir müssen die nicht leer sein.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

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

Re: Verzeichnisse löschen

  Alt 14. Feb 2005, 13:17
Danke Mathias, wieder was gelernt. Die Hilfe zum Win32-SDK hat nämlich immer nur von "Files" gesprochen, nie aber von "Directories"

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: Verzeichnisse löschen

  Alt 14. Feb 2005, 13:18
So sieht übrigens die Funktion aus, die ich in meinen Programmen zum Kopieren und Löschen verwende:
Code:
function ShellCmd(const hwndParent: HWND; dwFunction: dword;
  dwFlags: dword; szFrom, szTo: string): integer;
var
  SHFileOp       : TSHFileOpStruct;
begin
  ZeroMemory(@SHFileOp,sizeof(SHFileOp));

  SHFileOp.Wnd   := hwndParent;
  SHFileOp.wFunc := dwFunction;
  SHFileOp.pFrom := pchar(szFrom + #0);
  SHFileOp.pTo   := pchar(szTo + #0);
  SHFileOp.fFlags := dwFlags;
  Result         := SHFileOperation(SHFileOp);
end;
Entweder hat Borland das als bool eingebunden, oder ich habe die Prüfung vergessen. Aber wie auch immer, ich habe keine Schwierigkeiten beim Löschen von Ordnern.
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Verzeichnisse löschen

  Alt 14. Feb 2005, 13:20
TSHFileOperation geht auch mit Verzeichnissen, es muss nur mit ExcludeTrailingBackslash der letzte Backslash entfernt werden. Danke für eure Hilfe.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  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 05:10 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