AGB  ·  Datenschutz  ·  Impressum  







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

deletefile und Konsorten

Ein Thema von p80286 · begonnen am 12. Nov 2009 · letzter Beitrag vom 16. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

deletefile und Konsorten

  Alt 12. Nov 2009, 18:59
Hallo zusammen,

Falls ich hier falsch bin, bitte ich um Entschuldigung, aber das WinAPI hätte genauso gut/schlecht gepasst.

Mir geht es um das Löschen von Dateien.
Mein Problem sind Dateien, die einen Schreibschutz haben , versteckt und/oder Systemdateien sind.
(Ja, es geht um die nicht entsorgten Reste von Word)

mit DeleteFile komme ich nicht weiter, und Erase wollte ich nicht einsetzten, weil dann vorher das Assign erfolgen muß.
Daher hab ich es mit SHFileOperation und FOF_Silent or FOF_NoConfirmation gemacht.

Jetzt wird ohne nervige Rückfragen gelöscht und das war ja auch meine Absicht.

Trotzdem habe ich zwei Fragen hierzu:

a) kann man "rückzufragende " Dateien irgendwie definieren? ( z.B. System-Dateien Rückfragen ; Hidden-Dateien ohne Rückfrage löschen)

b) gibt es noch eine andere Möglichkeit Dateien zu löschen?

(vorauswahl mit Findfirst ist mir jetzt etwas zu aufwendig aber wenn's nichts anderes gibt)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#2

Re: deletefile und Konsorten

  Alt 12. Nov 2009, 19:08
Das Problem bei SysUtils.Delphi-Referenz durchsuchenDeleteFile bzw. Windows.MSDN-Library durchsuchenDeleteFile läßt sich mit MSDN-Library durchsuchenSetFileAttributes beheben

und mit der Umkehrfunktion MSDN-Library durchsuchenGetFileAttributes kann man, wie auch schon via Delphi-Referenz durchsuchenFindFirst/MSDN-Library durchsuchenFindFirstFile, die Attribute erhalten und auswerten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

Re: deletefile und Konsorten

  Alt 12. Nov 2009, 19:16
Entschuldige
vielleicht habe ich mich mißverständlich ausgedrückt.
ich würde gerne eine "parametrisierte Löschfunktion" haben, so es sie denn gibt.

Sonst wäre das Pärchen GetFileattribute, SetFileattribute natürlich nicht schlecht, weil dann gleich das Deletefile angesteuert werden kann.

Vielen Dank
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: deletefile und Konsorten

  Alt 12. Nov 2009, 19:23
Vielleicht mit ICopyHook::CopyCallback

Zitat:
If a copy callback handler is exposed and registered, SHFileOperation calls it unless you set a flag such as FOF_NOCONFIRMATION in the fFlags member of the structure pointed to by lpFileOp. See ICopyHook::CopyCallback for details on implementing copy callback handlers.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

Re: deletefile und Konsorten

  Alt 13. Nov 2009, 16:19
Hallo zusammen,

nach Euren Anregungen (vielen Dank nochmals!)
bin ich auf folgendes gekommen:

vorhandene und teilweise versteckt dokumentierte Dateiattribute:
Code:
$00000001 FILE_ATTRIBUTE_READONLY
$00000002 FILE_ATTRIBUTE_HIDDEN
$00000004 FILE_ATTRIBUTE_SYSTEM
$00000010 FILE_ATTRIBUTE_DIRECTORY
$00000020 FILE_ATTRIBUTE_ARCHIVE
$00000040 FILE_ATTRIBUTE_DEVICE        // Do not Use!!!!
$00000080 FILE_ATTRIBUTE_NORMAL
$00000400 FILE_ATTRIBUTE_REPARSEPOINT
$00000100 FILE_ATTRIBUTE_TEMPORARY
$00000800 FILE_ATTRIBUTE_COMPRESSED
$00001000 FILE_ATTRIBUTE_OFFLINE
$00002000 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
$00004000 FILE_ATTRIBUTE_ENCRYPTED
$00010000 FILE_ATTRIBUTE_VIRTUAL
diese Attribute sind teilweise nicht in der Windows.Pas vorhanden was aber von Version zu Version unterschiedlich ist.

DeleteFile steigt nur bei FILE_ATTRIBUTE_HIDDEN aus. Alle anderen Attribute behindern den Löschvorgang nicht (XP SP3 Prof)

Da ich für meine Aufgabe auch das Dateidatum beachten muß
werde ich wie folgt vorgehen
Code:
GetFileAttributesEX(Dateiname,GetFileExInfoStandard, @DateiInfo);
if Dateidatumzulassig(DateiInfo) then begin
  if (DateiInfo.dwFileAttributes and FILE_ATTRIBUTE_HIDDEN) >0 then
    Setfileattributes(Dateiname,FILE_ATTRIBUTE_NORMAL);
  Deletefile(Dateiname);
end;
Vielen Dank nochmal für Eure Anregungen!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#6

Re: deletefile und Konsorten

  Alt 13. Nov 2009, 16:23
Ich frage mich nur, wieso Du noch auf Hidden abfragst, bevor Du die Datei löschst. Du könntest doch genausogut "auf Verdacht" einfach alle Dateiattribute entfernen und dann löschen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

Re: deletefile und Konsorten

  Alt 13. Nov 2009, 16:39
Warum mehr tun als notwendig?
Die Abfrage brauch ich (Datum und Attribute), wenn dann Hidden gesetzt ist, dann werden die Attribute neu gesetzt ansonsten wird nichts gemacht.
Zum einen werde ich den Test auf Hidden für andere Attribute wohl ausbauen (müssen), zum anderen spare ich mir so einen Arbeitsschritt. Insbesonders auf Netzlaufwerken verspreche ich mir da einen Vorteil.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#8

Re: deletefile und Konsorten

  Alt 13. Nov 2009, 16:42
Du tust doch IMO bereits jetzt mehr als notwendig. Was ich meinte:
Delphi-Quellcode:
//GetFileAttributesEX(Dateiname,GetFileExInfoStandard, @DateiInfo);
if Dateidatumzulassig(DateiInfo) then begin
// if (DateiInfo.dwFileAttributes and FILE_ATTRIBUTE_HIDDEN) >0 then
  if Setfileattributes(Dateiname,FILE_ATTRIBUTE_NORMAL) then
    Deletefile(Dateiname);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

Re: deletefile und Konsorten

  Alt 13. Nov 2009, 17:18
das GetFileAttributesEX brauch ich, um an das Dateidatum zu kommen.
(nicht in jedem Fall arbeite ich vorher mit FindFirst/FindNext über das ich die Werte ja auch bekäme)
Und für jede Datei dann das Attribut zusetzen, bei manchmal 100 oder mehr Dateien, halte ich für ziemlich aufwendig, oder nicht?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#10

Re: deletefile und Konsorten

  Alt 13. Nov 2009, 20:46
Zitat von p80286:
(nicht in jedem Fall arbeite ich vorher mit FindFirst/FindNext über das ich die Werte ja auch bekäme)
OK, dann stellt sich das anders dar. Das sollte ja auch keine Kritik sein, ich hatte mich nur gewundert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 12:26 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