Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

Re: Temp Datei erstellen und wieder löschen

  Alt 24. Apr 2008, 14:09
also MSDN-Library durchsuchenFILE_ATTRIBUTE_TEMPORARY + MSDN-Library durchsuchenFILE_FLAG_DELETE_ON_CLOSE ist schon OK, aber MSDN-Library durchsuchenGetTempFileName würde ich noch mit MSDN-Library durchsuchenGetTempPath kombinieren.


was kleines aus meiner Funktionssamlung ... wir etwa so verwendet wie MSDN-Library durchsuchenCreateFile:
Delphi-Quellcode:
// © 1997-2008 by FNS Enterprize's (FNSE.de)
// © 2003-2008 by himitsu @ Delphi-PRAXiS.de

Function CreateTempFileA(lpPrefixString: LPSTR; bShareRead: Boolean = False; TempFileName: PFileNameA = nil): HANDLE;
  {not Inline}

  Const RM: Array[Boolean] of DWORD = (FILE_SHARE_READ, 0);

  Var i: Integer;
    S, S2: TFileNameA;
    E: LongInt;

  Begin
    Result := INVALID_HANDLE_VALUE;
    If GetTempPathA(MAX_PATH, @S) > MAX_PATH Then Exit;
    i := 9999;
    Repeat
      If GetTempFileNameA(@S, lpPrefixString, 0, @S2) = 0 Then Exit;
      Result := CreateFileA(@S2, GENERIC_READ or GENERIC_WRITE, RM[bShareRead],
        nil, CREATE_NEW, FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_DELETE_ON_CLOSE, 0);
      If Result = INVALID_HANDLE_VALUE Then Begin
        E := GetLastError;
        SetLastError(E);
      End Else E := 0;
      Dec(i);
    Until (i = 0) or (E <> ERROR_ALREADY_EXISTS);
    If TempFileName <> nil Then TempFileName^ := S2;
  End;
Und dann noch das ...
Delphi-Quellcode:
Type
  LPSTR = PAnsiChar;
  HANDLE = THandle;
  TFileName = packed Record[1..MAX_PATH] of AnsiChar;
  PFileName = ^TFileName;
wer will kann TFileName und TempFileName auch ausbauen ... ist ja nur nötig, falls man wissen will, wo/welche Datei erstellt wurde, oder man baut es sich auf PAnsiChar/PChar um (oder gar auf String/AnsiString).


Zitat:
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?
jupp ... nur das vor CreateFile
(in S2 steht der Name)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat