AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie gehe ich mit meinen temporären Daten um?

Wie gehe ich mit meinen temporären Daten um?

Offene Frage von "jobo"
Ein Thema von Der schöne Günther · begonnen am 3. Sep 2015 · letzter Beitrag vom 6. Sep 2015
Antwort Antwort
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Wie gehe ich mit meinen temporären Daten um?

  Alt 3. Sep 2015, 19:55
Er schreibt, dass die Anwendung ggf. zu lang läuft, so dass zwischen Programmstart und -Ende zusätzlich geprüft und bei Bedarf gehandelt werden muss.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Wie gehe ich mit meinen temporären Daten um?

  Alt 3. Sep 2015, 20:50
Er schreibt, dass die Anwendung ggf. zu lang läuft, so dass zwischen Programmstart und -Ende zusätzlich geprüft und bei Bedarf gehandelt werden muss.
Aber den Bedarf kennt nur er. Windows ist nicht hellsichtig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Wie gehe ich mit meinen temporären Daten um?

  Alt 4. Sep 2015, 06:32
Wenn ich dich richtig verstanden habe, dann kopierst du Dateien in den Temp-Ordner um sie dann zu öffnen. Danach können sie wieder gelöscht werden, richtig?

Was spricht dann dagegen, per StartAndWait darauf zu warten? Oder wie hier bereits geschrieben in einen extra Thread auslagern. Die ganze Geschichte mit den 5 Tagen usw. finde ich fast etwas umständlich. Außer du startest die Datei mehrmals hintereinander und willst sie nicht jedes mal wieder in den Temp-Ordner kopieren.

Ich hatte schonmal den Fall, dass ich eine Datei aus der Datenbank öffnen wollte. Hier habe ich einfach folgende Funktion benutzt, die den Exitcode auswertet:
Delphi-Quellcode:
function StartAndWait(const ExecuteFile: string; ParamString: string = ''): boolean;
var
  SEInfo: TShellExecuteInfo;
  ExitCode: DWORD;
begin
  Result := False;
  if not FileExists(ExecuteFile) then Exit;
  FillChar(SEInfo, SizeOf(SEInfo), 0);
  SEInfo.cbSize := SizeOf(TShellExecuteInfo);
  with SEInfo do
    begin
      fMask := SEE_MASK_NOCLOSEPROCESS;
      Wnd := Application.Handle;
      lpFile := PChar(ExecuteFile);
      lpParameters := PChar(ParamString);
      nShow := SW_SHOWNORMAL;
    end;
  if ShellExecuteEx(@SEInfo) then
    begin
      repeat
        Application.ProcessMessages;
        Sleep(100);
        GetExitCodeProcess(SEInfo.hProcess, ExitCode);
      until (ExitCode <> STILL_ACTIVE) OR Application.Terminated;
      Result := True;
    end;
end;

begin
  [...] //Aus Datenbank in Temp-Order kopieren
  StartAndWait(ExecuteFile);//Starten und auf Beenden warten
  DeleteFile(ExecuteFile); //Löschen
end;
Aber ich denke ja mal fast, dass du diese Methode schon ausgeschlossen hast. Wieso?

Grüße
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Wie gehe ich mit meinen temporären Daten um?

  Alt 4. Sep 2015, 06:44
Wie viel kannst Du Deinen Anwendern zutrauen?
Ich hatte hier mal mit Office-Dokumenten zutun, die in einer Datenbank gespeichert wurden. Via Doppelklick hatte ich sie auch in den Temp-Ordner gelegt und dann per ShellExecute geöffnet. Zuerst war der Anwender glücklich, denn er sah das Dokument. Dann fing er ungnädigerweise an, das Dokument zu bearbeiten und auch zu speichern - auch das ging. Und über die Liste der letzten Dokumente hat er es jenseits unserer Anwendung in Excel wieder aufgerufen und weiter bearbeitet - unwissentlich, dass die Datei im Temp-Ordner nur "bedingt gut" aufgehoben war.
Bis dann irgendeine System-Reinigung zuschlug und die Datei ins Aus beförderte.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Wie gehe ich mit meinen temporären Daten um?

  Alt 4. Sep 2015, 06:55
Soweit ich mich erinnere, kann man auch die Namen der Temp-Dateien vorgeben, zumindest den Präfix.
Wenn das noch stimmt, lösche beim Programmstart einfach alle 'Deine' (alten) Tempdateien. Die, die gesperrt sind, sind offenbar noch in Verwendung.

Oder ist das ein Service? Na dann, einfach regelmäßig (dann kannst Du dir die auch merken).
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wie gehe ich mit meinen temporären Daten um?

  Alt 4. Sep 2015, 07:03
1/2 OT: Sehr löbliches Vorhaben, daß viel zu wenig Nachahmer findet. Ich hatte neulich 4GB an temporären Dateien und Ordnern aus meinem ein Jahr altem System gelöscht, da meine Programme sowas nicht verwenden, weiss ich daß das Müll von den paar anderen Programmen sein muss, die sonst noch auf meinem Rechner werkeln.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.174 Beiträge
 
Delphi 12 Athens
 
#7

AW: Wie gehe ich mit meinen temporären Daten um?

  Alt 4. Sep 2015, 07:54
Löblich finde ich das auch, aber ...

War das nicht genau der Sinn des Temp-Ordners, das er von Zeit zu Zeit mal gelöscht werden soll ?
Ich denke nicht das MS hier unbedingt gelöscht haben möchte, zumindest macht das aus meiner Erfahrung kaum ein Programm.

Ich bin immer ganz froh wenn die Platte mal wieder eng wird das ich da noch ein paar GB wieder freischaufeln kann.

Edit:
Wenn ich Temp Daten verwende, dann in eigenen Unterverzeichnissen, da habe ich dann die volle Kontrolle drüber.

Rollo
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: Wie gehe ich mit meinen temporären Daten um?

  Alt 4. Sep 2015, 08:12
1/2 OT: Sehr löbliches Vorhaben, daß viel zu wenig Nachahmer findet.
Dem genau ist leider so. Eigene Dateien kann man (mit etwas Disziplin) verwalten und dort für Ordnung sorgen (z. B. eigenes Verzeichnis unterhalb von Temp und beim Programmende alles wegwerfen, was da noch übrig ist). Soll der Anwender da nicht ausversehen (wie Daniel beschrieb) mit den Dateien arbeiten, dann kommt auf die Dateien das Schreibschutzattribut drauf, damit können Excel und Co. da nicht mehr Schreiben und der Anwender wird drauf hingewiesen. Er kann ja dann "speichern unter"-wählen und hat ab da die Verantwortung für die veränderte Datei.
Ich hatte neulich 4GB an temporären Dateien und Ordnern aus meinem ein Jahr altem System gelöscht, da meine Programme sowas nicht verwenden, weiss ich daß das Müll von den paar anderen Programmen sein muss, die sonst noch auf meinem Rechner werkeln.

Sherlock
Darin siehe ich das Hauptptoblem. Um dem abzuhelfen, gibt es bei mir im Autostart eine Batchdatei mit dem schönen Namen DelTemp.bat und so sieht sie aus:
Delphi-Quellcode:
@echo temporaere Dateien loeschen
if exist o:\~$PVRTmp0$\*.* rd /s /q o:\~$PVRTmp0$
if exist e:\~$PVRTmp0$\*.* rd /s /q e:\~$PVRTmp0$
if exist c:\temp\acrord32_sbx\*.* rd /s /q c:\temp\acrord32_sbx
if exist "c:\Dokumente und Einstellungen\stephan\Lokale Einstellungen\Temporary Internet Files\Content.IE5\*.*" rd /s /q "c:\Dokumente und Einstellungen\stephan\Lokale Einstellungen\Temporary Internet Files\Content.IE5"
if exist "c:\Dokumente und Einstellungen\stephan\Cookies\*.*" rd /s /q "c:\Dokumente und Einstellungen\stephan\Cookies"
if exist "c:\wincmd5\$wc\*.*" del /q c:\wincmd5\$wc\*.*"
if exist "c:\temp\*.*" del /q c:\temp\*.*"
if exist "c:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Avira\AntiVirus\LogFiles\*.*" rd /s /q "c:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Avira\AntiVirus\LogFiles"
if exist "c:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Avira\AntiVirus\Reports\*.*" rd /s /q "c:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Avira\AntiVirus\Reports"
Das sind die mit bekannten Stellen, an denen diverse andere ihren Müll hinterlassen und dort wird dann beim Rechnerstart aufgeräumt. Was noch in Benutzung ist, kann von der Batchdatei nicht gelöscht werden und ist dann ggfls. beim nächsten Mal dran.

Seit dem wird die Festplatte nicht mehr so schnell voll.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz