- Чтение значения переменной окружения TEMP
- API-функция GetTempPath
Времена переменной окружения TEMP уходят в до-Windows'овские дни DOS? но он также доступен для использования и в приложениях Windows. По соглашению, обе переменные TMP и TEMP указывают папку временных файлов.Значения этих переменных могут быть легко считаны с помощью функций GetEnvironmentVariable:
sTmpDir:= GetEnvironmentVariable('TEMP');
Замечание: Для использования функции GetEnvironmentVariable Вы должны включить модуль SysUtils. Версия функции в SysUtils является обёрткой API-функции, объявленной модуле Windows, которая принимает большее количество параметров.
Заголовки функций:
SysUtils:
function GetEnvironmentVariable(const Name: string): string; overload;
Windows:
function GetEnvironmentVariable(lpName: PChar; lpBuffer: PChar; nSize: DWORD): DWORD; stdcall; overload;
API-функция GetTempPath.
API-функция Windows GetTempPath возвращает путь к папке с временными файлами. Она объявлена модуле Windows и выглядит следующим образом:
function GetTempPath(nBufferLength: DWORD; lpBuffer: PChar): DWORD; stdcall;
Т.е. она принимает на вход буфер и размер буфера, и записывает папку с временными файлами вв буфер, возращая количество записанных в буфер данных.
Это не совсем удобно, так как лучше сразу получать в необходимую переменную. По этой причине рассмотрим функцию-обёртку:
function GetTempDirectory(): String;
var
tempFolder: array[0..MAX_PATH] of Char;
begin
GetTempPath(MAX_PATH, @tempFolder);
Result:= StrPas(tempFolder);
end;
Это позволит Вам писать более интуитивно понятный код, тако как:
t := GetTempDirectory();
Примечание:
- GetTempPath и MAX_PATH описаны в модуле Windows.
- StrPas описан в модуле SysUtils.
Автор: Ильдар Валеев