AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Wann selbsterstellte temporäre Dateien wieder löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Wann selbsterstellte temporäre Dateien wieder löschen

Ein Thema von rollstuhlfahrer · begonnen am 27. Feb 2011 · letzter Beitrag vom 28. Feb 2011
Antwort Antwort
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#1

Wann selbsterstellte temporäre Dateien wieder löschen

  Alt 27. Feb 2011, 20:53
HI @all,

ich möchte gerne wissen, wann man temporäre Dateien wieder löschen sollte. In dem konkreten Fall geht es um eine Datei, die aus einem meiner Programme rausgezogen werden soll (per Drag&Drop). Wird diese Datei auf ein Explorer-Fenster gezogen, so kann man sich ja sicher sein, dass die Datei auch dort hinkopiert wurde. Hat man es dagegen mit einem anderen Fester zu tun, welches zwar den/die Dateinamen aus der Drag&Drop-Aktion ausließt, diese aber nicht an anderer Stelle zwischenspeichert, hätte man Pech, wenn man die Datei direkt nach der Aktion wieder löschen würde.

Problematisch ist nur der letzte Fall, wenn eine Anwendung eine hineingezogene Datei in eine Liste einfügt und erst bei bedarf öffnet. Da man als Programmierer nicht dem User sein Temp-Verzeichnis vollmüllen will, müssen diese ungenutzten Daten irgendwann wieder weg, weil Windows ja nicht automatisch das Temp-Verzeichnis säubert.
Mir ist sogar schon ein Treiber von Asus untergekommen, der Konfigurationsdaten im Temp-Verzeichnis lagert und sobald diese nicht mehr da sind, nach jeder Anmeldung meckert. Da hat ein Entwickler den Sinn von temporären Dateien verfehlt.

Also: Wann löschen?

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Wann selbsterstellte temporäre Dateien wieder löschen

  Alt 27. Feb 2011, 21:02
Günstig wäre es ein Unterverzeichnis im Temp-Verzeichnis zu verwenden so das du im Notfall beim Nächsten Programmstart feststellen kannst welche Dateien seit dem letzten Windows-Neustart mit 100%iger Sicherheit nicht mehr benötigt werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wann selbsterstellte temporäre Dateien wieder löschen

  Alt 27. Feb 2011, 22:04
Wenn die Datei spätestens dann gelöscht werden soll, wenn auch dein Programm (irgendwie) beendet wird, dann würde ich die Möglichkeiten des OS nutzen.

Einmal bietet CreateFile die Möglichkeit eine Datei als temporär zu kennzeichnen und sobald das Dateihandle geschlossen wird, wird diese automatisch gelöscht.
Das geschieht sobald das letzte Dateihandle zu dieser Datei verschwindet.
> Also, nachdem dein Programm sein Filehandle freigegeben hat und sobald auch die andere Anwendung ihres freigab und somit keiner mehr die Datei benötig.

Man kann eine Datei auch irgendwo bei Windows melden, so daß sie beim nächsten Bootvorgang gelöscht wird. "Delete/Remove on Reboot" oder so.

Du kannst auch die andere Anwendung überwachen und auf deren Beendigung reagieren.

...
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

AW: Wann selbsterstellte temporäre Dateien wieder löschen

  Alt 28. Feb 2011, 09:28
Ich hab mich jetzt dazu entschieden, Windows zu sagen, dass es die Datei beim Neustart entfernen soll. Das geht mit Hilfe von MSDN-Library durchsuchenMoveFileEx.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
PAB

Registriert seit: 30. Mai 2002
Ort: Bünde
10 Beiträge
 
#5

AW: Wann selbsterstellte temporäre Dateien wieder löschen

  Alt 28. Feb 2011, 11:30
Ich hab mich jetzt dazu entschieden, Windows zu sagen, dass es die Datei beim Neustart entfernen soll. Das geht mit Hilfe von MSDN-Library durchsuchenMoveFileEx.
Laut MSDN braucht dein Programm dazu aber Administratorrechte, da der Löschbefehl in HKLM gespeichert wird.
Philipp
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Wann selbsterstellte temporäre Dateien wieder löschen

  Alt 28. Feb 2011, 11:45
Hi,

ich mache es einfach beim Beenden des Programmes.
Schon deshalb, weil auch Installationen unter Terminalserver / Citrix laufen.
Und die booten ja eher weniger.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wann selbsterstellte temporäre Dateien wieder löschen

  Alt 28. Feb 2011, 11:50
Statt einem TFileStream

THandleStream + CreateFile + CREATE_NEW + FILE_SHARE_READ + FILE_SHARE_WRITE + FILE_ATTRIBUTE_TEMPORARY + FILE_FLAG_DELETE_ON_CLOSE

Den Dateinamen kannst'e dann ans andere Programm weitergeben und sobald deine und die andere Anwendung beendet wurden, bzw. wenn alle Dateihandle zu gechlossen wurden, dann wird die Datei gelöscht.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Wann selbsterstellte temporäre Dateien wieder löschen

  Alt 28. Feb 2011, 13:03
@himitus: Da hast aber schon den Ausgangspost gelesen in dem beschrieben wird das die Datei zwar an ein programm übergeben wird aber nicht zwangsläufig dort sofort geöffnet wird (zum Beispiel wenn die Datei in eine Playliste gezogen wird heißt es nicht das alle Dateien in der Playliste geöffnet sind)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Wann selbsterstellte temporäre Dateien wieder löschen

  Alt 28. Feb 2011, 13:42
Und wie wäre es mit der klassischen Batch-Datei?
Namen der zu löschenden Dateien eintragen,
Namen der Batchdatei an Scheduler übergeben,
Das war's.

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

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#10

AW: Wann selbsterstellte temporäre Dateien wieder löschen

  Alt 28. Feb 2011, 20:20
Laut MSDN braucht dein Programm dazu aber Administratorrechte, da der Löschbefehl in HKLM gespeichert wird.
Danke für den Hinweis, das habe ich leider überlesen.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  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 12:14 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