Лучше, чем любой из этих вариантов, вы должны использовать системную функцию _tempnam . Возвращает случайное имя файла в каталоге для файла, который не существует. Если вы хотите, вы можете указать префикс _tempnam, чтобы создаваемый вами файл был узнаваемо вашим. Если вы предоставляете уникальный префикс, не нужно беспокоиться о том, что кто-то откроет ваш файл. Однако есть и другое решение.
_tempnam подходит только в том случае, если вы хотите поместить файл в произвольный каталог. Если вас не волнует, что каталог является системным временным каталогом, используйте tempfile_s . Он также создаст файл для вас, так что не беспокойтесь о состоянии гонки ... Ошибки будут появляться только в том случае, если вы попытаетесь открыть больше временных файлов, чем может обработать система. Большим недостатком tempfile_s является то, что файл исчезнет, как только вы его закроете.
РЕДАКТИРОВАТЬ: я получил отрицательный голос, потому что это функция C. У вас есть доступ к среде выполнения C, импортировав их в Delphi. Посмотрите на некоторые примеры с msvcrt.dll здесь .
function _tempnam(const Dir: PChar, const Prefix: PChar): PChar; cdecl;
external 'msvcrt.dll' name '_tempnam';