![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Путь к временному каталогу Windows [D7, WinXP]
Антоныч © (2005-01-14 11:59:00)Привет всем!
Возник такой вопрос. Пытаюсь следующим образом путь к временному каталогу Windows:
var tmpPath: array[0..255] of char;
WorkTempFolder: string;
begin
GetTempPath(255,tmpPath);
WorkTempFolder:=StrPas(tmpPath);
end;
так вот, затем в WorkTempFolder он хранится в виде 'C:\DOCUME~1\ZHURAV~.SK\LOCALS~1\Temp'.. Короче, в каком-то dos-виде. Далее программа отказывается работать с таким путем - когда необходимо копировать файлы, то пишет об ошибке. Может, существует другая API-функция, позволяющая получать системные каталоги? (смотрел инфу про SHGetSpecialFolderLocation - позволяет получать многие пути, но только не временной папки). Помогите плз найти выход!
Zuborob (2005-01-29 13:04:00) [1]А не проще ли через переменную-окружение?
ExpandEnvironmentStrings('%TEMP%', Stroka, 255);
Sumor (2005-01-14 20:22:00) [2]В [4]: Результат одинаковый - читать как "оба варианта функции работали правильно" :)
Вариант (2005-01-14 18:55:00) [3]Пожалуйста:
function c_GetTempPath: string;
var
Buffer: array[0..1023] of Char;
begin
SetString(Result, Buffer, GetTempPath(Sizeof(Buffer) - 1, Buffer));
end;
И всё работает.
Sumor (2005-01-14 18:39:00) [4]Я попробовал и так, и так - результат одинаковый.
Проблема возможно дальше, некоторые функции хотят строку с завершающим нулём, некоторые типа String, и главное не перепутать
Антоныч (2005-01-14 12:13:00) [5]Спасибо, заработало. :). А может поясните вкратце, если не сложно, в чем ошибка-то?
Kerk (2005-01-14 12:04:00) [6]программе пофиг с каким путем работать.. в дос виде или нет. ошибка в другом
kaZaNoVa (2005-01-14 12:04:00) [7]
function SysDir:String;
var
Buf:array[0..MAX_PATH] of Char;
begin
GetSystemDirectory(@buf, MAX_PATH+1);
Result := buf;
end;
function TempDir:String;
var
Buf:array[0..MAX_PATH] of Char;
begin
GetTempPath(MAX_PATH+1, @buf);
Result := buf;
end;