A veces necesitamos crear archivos temporales con nombres único. Este artículo muestra cómo hacerlo

Creando un archivo temporal único

Copyright © 2000 Ernesto De Spirito

Help & Manual authoring tool

CreateTempFile

Esta función crea un archivo único en el directorio temporal y devuelve su nombre (camino incluido). El nombre del archivo tendrá la forma "~XXXX.TMP", donde XXXX es la representación hexadecimal de un entero de dos bytes (determinado usando el reloj del sistema).

uses SysUtils, Windows;

function CreateTempFile: TFileName;
// Crea un directorio temporal y devuelve su nombre y camino
var
  NomArchTemp: array [0..MAX_PATH-1] of char;
begin
  if GetTempFileName(PChar(GetTempDir), '~', 0, NomArchTemp) = 0 then
    raise Exception.Create(SysErrorMessage(GetLastError));
  Result := NomArchTemp;
end;

Llamada de ejemplo

Este archivo temporal no es borrado automáticamente por Windows, de modo que su aplicación es responsable de eliminar los archivos temporales creados por esta función cuando ya no se necesiten. Por ejemplo podría usar un código como el siguiente:

procedure TForm1.Button1Click(Sender: TObject);
var
  NomArchTemp: TFileName;
begin
  NomArchTemp := CreateTempFile;
  try
    // Abrir el archivo
    // Usar el archivo
    // Cerrar el archivo
  except
    try
      // Cerrar el archivo si fue abierto
    finally
      SysUtils.DeleteFile(NomArchTemp);
    end;
  end;
end;
Boycott Trend Micro!