function GetTempFile(const Extension: string): string;
var
Buffer: array[0..MAX_PATH] of Char;
aFile: string;
beginrepeat
GetTempPath(SizeOf(Buffer) - 1, Buffer);
GetTempFileName(Buffer, '~', 0, Buffer);
Result := ChangeFileExt(Buffer, Extension);
untilnot FileExists(Result);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetTempFile('.~tp'));
// The temp. file looks like C:\WINDOWS\TEMP\~61D5.TMP end;
{
Note:
The GetTempFile function just returns a unique filename but
doesn't create the file.
}{
Bemerkung:
Die GetTempFile Funktion liefert nur den Namen der temp.
Datei aber erstellt sie nicht.
}
Программная функция GetTempFile в этом коде Delphi создает временное имя файла с указанным расширением, которое гарантировано не существует при возвращении функции.
Вот разбивка на шаги, что делает каждый часть кода:
Функция GetTempFile принимает параметр Extension (строка) и возвращает временное имя файла с этим расширением.
Она использует два переменных: Buffer, который является массивом символов, и aFile, которая является строкой. Эти переменные используются для хранения пути к временному файлу и имени соответственно.
Функция повторно вызывает функцию GetTempPath (которая получает путь к временной директории) и функцию GetTempFileName (которая генерирует уникальное имя временного файла в этом пути).
Затем она комбинирует эти с указанным расширением, используя ChangeFileExt, что приводит к уникальному временному имени файла с этим расширением.
Наконец, она проверяет, существует ли сгенерированный файл, используя FileExists. Если он существует, функция повторно вызывает процесс, пока не получит несуществующий файл.
Процедура Button1Click демонстрирует, как использовать эту функцию. Она вызывает GetTempFile с расширением .~tp и затем отображает сообщение с результатом временного имени файла.
Как отмечено в комментариях кода, функция GetTempFile только возвращает уникальное имя файла, но не создает файл сам.
Вот альтернативное решение, использующее встроенный класс TPath Delphi:
Это код достигает того же результата в более компактной форме, используя TPath.GetTempFileName, которая генерирует уникальное имя временного файла, и конкатенируя его с указанным расширением.
Создается функция GetTempFile, которая возвращает уникальное имя файла временной папки Windows с указанным расширением, если файл с таким именем уже существует, то функция будет повторять процесс до тех пор, пока не будет найдено свободное имя.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS