AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Temp Datei erstellen und wieder löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Temp Datei erstellen und wieder löschen

Ein Thema von Salomon · begonnen am 10. Apr 2008 · letzter Beitrag vom 30. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#1

Temp Datei erstellen und wieder löschen

  Alt 10. Apr 2008, 12:56
Hallo,
ich muss in einen Ordner temporär ein Excel xls file kopieren um dieses mit Daten zu füllen.

Wie kann ich sicherstellen, das der Dateiname nicht schon existiert? Sollte ich hier mit FindFirst / FindNext das Verzeichnis durchsuchen? Wie vergebe ich den Datei Namen? Evtl. Datum + einen random String?

Und zu guter letzt, wie sorge ich dafür das alte Tempdateien gelöscht werden? Evtl. wieder das Verzeichnis durchsuchen und alle Dateien die älter als eine Woche sind löschen?


Gruß
Marcus
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Temp Datei erstellen und wieder löschen

  Alt 10. Apr 2008, 12:58
man könnte auch einen Zufälligen Basisnamen kombiniert mit einem Timestamp verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Temp Datei erstellen und wieder löschen

  Alt 10. Apr 2008, 13:02
Oder man benutzt einfach die API-Funktion [msdn]Get^TempFilename[/msdn].
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Temp Datei erstellen und wieder löschen

  Alt 10. Apr 2008, 13:10
Zitat von Salomon:
...Wie kann ich sicherstellen, das der Dateiname nicht schon existiert? ...
if fileexists(Pfad+Dateiname) then ...
Zitat von Salomon:
...Und zu guter letzt, wie sorge ich dafür das alte Tempdateien gelöscht werden? Evtl. wieder das Verzeichnis durchsuchen und alle Dateien die älter als eine Woche sind löschen?
Entweder das oder du löscht die Datei gleich, ich weiß ja jetz nicht genau wie lang sie existent sein sollen.
Bei der ersten Variante (und wenn du einen TimeStamp mit einbaust) kannst du das Datum aus den Filename schließen, ansonsten geht auch
Delphi-Quellcode:
FileAge(Pfad+Dateiname); //Als Zahlenwert und mit
FileDateToDateTime(FileAge(Pfad+Dateiname)); //als Datum
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Temp Datei erstellen und wieder löschen

  Alt 10. Apr 2008, 13:11
man könnte es auch so prüfen:
if not FileExists('C:\temp\irgendwas.xls') then

Die Funktion ist im Unit SysUtils.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#6

Re: Temp Datei erstellen und wieder löschen

  Alt 10. Apr 2008, 13:23
WOW, das sind mal viele Anrgegungen Ich werd dann erstmal etwas "basteln". Thanx
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
wido

Registriert seit: 2. Jan 2006
122 Beiträge
 
#7

Re: Temp Datei erstellen und wieder löschen

  Alt 10. Apr 2008, 14:31
Windows bietet da 2 Mechanismen:

1. Einen geeigneten Namen bekommst Du via MSDN-Library durchsuchenGetTempFilename.
2. MSDN-Library durchsuchenCreateFile bietet ein Flag mit dem Namen FILE_FLAG_DELETE_ON_CLOSE. Die von Dir erstellte Temporäre Datei wird dann automatisch gelöscht, sobald Du sie geschlossen hast.

Einfacher gehts nicht .
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#8

Re: Temp Datei erstellen und wieder löschen

  Alt 11. Apr 2008, 11:38
Hey, da ich ein Template kopiere brauch ich eigentlich nur einen Temporären Dateinamen.... Gibts da ein "GetTempFilename" das mir nur einen Namen zurückgibt und keine Datei gleichzeitig erzeugt?


Für interessierte, mit diesem Code lösche ich in meinem Temp Verzeichnis alle Dateien älter als 7 Tage:

Delphi-Quellcode:
  // -- Delete Temp Data, older one week --- // faAnyFile
  if FindFirst(FRM_Main.AppPath +'Files\Temp\' + '*.*', faDirectory, SearchRec) = 0 then
  begin
    repeat
       if (SearchRec.Attr <> faDirectory) and (SearchRec.Name <>'.') and (SearchRec.Name <>'..') then
       begin
         //showmessage(DateToStr(FileDateToDateTime(FileAge(FRM_Main.AppPath +'Files\Temp\' + SearchRec.Name))));
        //showmessage(SearchRec.Name);
        if FileDateToDateTime(FileAge(FRM_Main.AppPath +'Files\Temp\' + SearchRec.Name)) < (Date -7) then
        begin
          //showmessage('Älter als eine Woche');
          DeleteFile(FRM_Main.AppPath +'Files\Temp\' + SearchRec.Name); // Delete File
        end;
       end;
    until FindNext(SearchRec) <> 0;
  end;
  FindClose(SearchRec);
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Temp Datei erstellen und wieder löschen

  Alt 11. Apr 2008, 13:55
Zitat von Salomon:
Gibts da ein "GetTempFilename" das mir nur einen Namen zurückgibt und keine Datei gleichzeitig erzeugt?
Folgende Funktionen wurden aus der JCL kopiert.
Also ich benütze die JCL in allen meinen Programm, denn sie enthält fast alles, was Borland in der RTL/VCL vergessen hat.
Delphi-Quellcode:
function PathGetTempPath: string;
var
  BufSize: Cardinal;
begin
  BufSize := Windows.GetTempPath(0, nil);
  SetLength(Result, BufSize);
  Windows.GetTempPath(BufSize, PChar(Result));
  //StrResetLength(Result);
  Result := PChar(Result);
end;

function FileGetTempName(const Prefix: string): string;
var
  TempPath, TempFile: string;
  R: Cardinal;
begin
  Result := '';
  TempPath := PathGetTempPath;
  if TempPath <> 'then
  begin
    SetLength(TempFile, MAX_PATH);
    R := GetTempFileName(PChar(TempPath), PChar(Prefix), 0, PChar(TempFile));
    if R <> 0 then
    begin
      StrResetLength(TempFile);
      Result := TempFile;
    end;
  end;
end;
Andreas
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Temp Datei erstellen und wieder löschen

  Alt 11. Apr 2008, 13:57
Wusste gar nicht, dass es so eine Funktion gibt, ich habe für solche Späße immer Guids genommen. Du könntest das auch machen (wird in der Beschreibung ja sogar empfohlen) oder uUnique ungleich Null nehmen und hoffen, dass so ein Name noch nicht existiert.
  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 18:49 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