Delphi временная папка windows
Привет всем!
Возник такой вопрос. Пытаюсь следующим образом путь к временному каталогу Windows:
var tmpPath: array[0..255] of char;
WorkTempFolder: string;
begin
GetTempPath(255,tmpPath);
WorkTempFolder:=StrPas(tmpPath);
end;
так вот, затем в WorkTempFolder он хранится в виде «C:\DOCUME
1\Temp».. Короче, в каком-то dos-виде. Далее программа отказывается работать с таким путем — когда необходимо копировать файлы, то пишет об ошибке. Может, существует другая API-функция, позволяющая получать системные каталоги? (смотрел инфу про SHGetSpecialFolderLocation — позволяет получать многие пути, но только не временной папки). Помогите плз найти выход!
← →
Kerk © ( 2005-01-14 12:04 ) [1]
программе пофиг с каким путем работать.. в дос виде или нет. ошибка в другом
← →
kaZaNoVa © ( 2005-01-14 12:04 ) [2]
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;
Спасибо, заработало. :). А может поясните вкратце, если не сложно, в чем ошибка-то?
← →
Sumor ( 2005-01-14 18:39 ) [4]
Я попробовал и так, и так — результат одинаковый.
Проблема возможно дальше, некоторые функции хотят строку с завершающим нулём, некоторые типа String, и главное не перепутать
Пожалуйста:
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 20:22 ) [6]
В [4]: Результат одинаковый — читать как «оба варианта функции работали правильно» 🙂
А не проще ли через переменную-окружение?
ExpandEnvironmentStrings(«%TEMP%», Stroka, 255);
Delphi временная папка windows
О проблемах, например, с регистрацией пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.
| Регистрация Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда — alarforum@yandex.ru Но временная папка стоит особняком. GetTempPath — это единственный способ её получить. И, кстати, понятия «системная папка Temp» не существует (о чём чёрным по белому сказано в описании GetTempPath). Поэтому не очень понятно, что имеется в виду под «виндосовский темп». Delphi временная папка windows
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
kostas |
| ||
Шустрый Профиль Репутация: 3 | |||
|
Yanis |
| ||
Эксперт Профиль Репутация: 72
| |||
|
kostas |
| ||
Шустрый Профиль Репутация: 3 | |||
|
denks |
| ||
Код |
function StrPas(const Str: PChar): string; begin Result := Str; end; |
function GetTempDir: string;
var
Buffer: array[0..MAX_PATH] of Char;
begin
GetTempPath(SizeOf(Buffer) — 1, Buffer);
Result := StrPas(Buffer);
end;
Функция GetTempDir непосредственно возвращает путь к директории TEMP
iskatel2 |
| ||
Код |
procedure TForm1.Button1Click(Sender: TObject); var Buffer: array[0..1023] of WideChar; st:string; begin try SetString(st, Buffer, GetTempPath(Sizeof(Buffer)-1,Buffer)); except end; ShowMessage(st); end; |
Это сообщение отредактировал(а) iskatel2 — 25.12.2008, 19:22
Akella |
| ||
Творец Профиль Репутация: 36
Это сообщение отредактировал(а) Akella — 25.12.2008, 19:57 | |||
|
CodeMonkey |
| |||||||
Код |
procedure TForm1.FormCreate(Sender: TObject); var Buffer: array[0..MAX_PATH] of Char; begin GetTempPath((SizeOf(Buffer) div SizeOf(Char)) — 1, Buffer); Caption := Buffer; end; |
1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.
|