unique temp file name/de

From Lazarus wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Windows logo - 2012.svg

Dieser Artikel behandelt ausschließlich Windows.

Siehe auch: Multiplatform Programming Guide/de

Deutsch (de)


Zurück zur Seite Code Beispiele.


Dieser Artikel beschäftigt sich mit der Windowsprogrammierung.

Die Funktion generiert für temporäre Dateien einen eindeutigen Dateinamen.

uses
  SysUtils, ...;
  
  ...
  
function TempFileName(strPrefix: String): string;
var
  pchBuffer: PChar;
  pchTempDir: PChar;
  pchPrefix: PChar;

const
  wrdTempDirSize = 255;
  wrdBufferSize = 255;
  wrdPrefixSize = 3;

begin
  // Speicher anfordern
  GetMem(pchBuffer, wrdBufferSize);
  GetMem(pchPrefix,wrdPrefixSize);
  GetMem(pchTempDir,wrdTempDirSize);

  // kürzt das Prefix auf die zulässigen 3 Stellen
  StrPCopy(pchPrefix,Copy(strPrefix,0,3));
  // kopiert den Inhalt der Umgebungsvariable in ein PChar
  StrPCopy(pchTempDir,GetEnvironmentVariable('Temp'));

  if GetTempFileName(pchTempDir, pchPrefix, 0, pchBuffer) > 0 then
    Result := StrPas(pchBuffer)
  else
    Result := '';

  // Speicher freigeben
  FreeMem(pchBuffer, wrdBufferSize);
  FreeMem(pchPrefix, wrdPrefixSize);
  FreeMem(pchTempDir, wrdTempDirSize);
end;
  
  ...

oder einfacher:

uses
...Sysutils...
function TempFileName(strPrefix: String): string;
begin
  result:=SysUtils.GetTempFileName('',strPrefix);
end;