![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Узнать могу ли я создать файл в папке
Oleg_teacher © (2009-01-28 13:29:00)Програма используєт временний файл ... возникают проблеми с возможностю создавать их (допустим в папке с програмою не всегда подходит, увидел что в некоторых даже папка Temp заблокирована). Буду пробовать создавать в других системных папках ... Но вопрос в следующем ка проверить могу ли я в етой папке создавать... я делаю пока так :
win_temp:='путь к папке в которою пробую записать';
try
AssignFile(f,win_temp+'1.txt');
rewrite(f);
writeln(f,'good');
CloseFile(f);
DeleteFile(win_temp+'1.txt');
except
если ошибка создания то здесь код на другую папку ...
end;
правильно ли ето, есть ли проще способ?
Anatoly Podgoretsky (2009-01-28 19:25:00) [1]> Oleg_teacher (28.01.2009 17:10:13) [13]
Скажи, что такое оптимальнее? Я же говорил, что более квалифицировано, меньше сюрпризов в будущем.
Oleg_teacher (2009-01-28 17:10:00) [2]
> Если будет ошибка, то кто файл будет закрывать?
согласен ...
> но по сути SHGetSpecialFolderPath конечно так более квалифицировано
то есть таким способом оптимальнее да?
Anatoly Podgoretsky (2009-01-28 17:03:00) [3]> Oleg_teacher (28.01.2009 16:55:10) [10]
Если будет ошибка, то кто файл будет закрывать?
Anatoly Podgoretsky (2009-01-28 17:02:00) [4]> Oleg_teacher (28.01.2009 16:41:09) [9]
Если нужен TEMP текущего пользователя, то приведеных методов достаточно, но по сути SHGetSpecialFolderPath конечно так более квалифицировано.
Oleg_teacher (2009-01-28 16:55:00) [5]
> Код неправильный, нет обработки try finally
а зачем finally, че то я не разобрался?
Oleg_teacher (2009-01-28 16:41:00) [6]попробую еще и с помощью SHGetSpecialFolderPath
Anatoly Podgoretsky (2009-01-28 16:40:00) [7]> {RASkov} (28.01.2009 16:36:06) [6]
Только это GetTempPath
{RASkov} (2009-01-28 16:37:00) [8]> Может лучше так:
> GetEnvironmentVariable('TEMP')
> GetEnvironmentVariable('TMP')
> GetTempPath
это три варианта :) Наверняка есть еще)
{RASkov} (2009-01-28 16:36:00) [9]> [4] Oleg_teacher (28.01.09 16:25)
> У одного чела ето оказалося: c:\windows\temp а под "гость"
> у хр туда нет доступа ...
Папок "ТЕМП" может быть более одной....
> ищу папочку темп так:
Может лучше так:
GetEnvironmentVariable('TEMP')
GetEnvironmentVariable('TMP')
GetTempPath
Oleg_teacher (2009-01-28 16:27:00) [10]
> вот этого не надо
так и думал в aplication data или общие документи, или мои документи
Oleg_teacher (2009-01-28 16:25:00) [11]
> Если папка Temp заблокирована, то это конец Виндоус.
ищу папочку темп так:
win_temp:='';
try
p := GetEnvironmentStrings;
while p^ <> #0 do
begin
if pos('temp=',LowerCase(StrPas(p)))=1 then win_temp:=StrPas(p);
inc(p, lStrLen(p) + 1);
end;
delete(win_temp,1,5);
except
end;
У одного чела ето оказалося: c:\windows\temp а под "гость" у хр туда нет доступа ...
Anatoly Podgoretsky (2009-01-28 13:39:00) [12]Если папка Temp заблокирована, то это конец Виндоус.
Код неправильный, нет обработки try finally
Правильный$Вася (2009-01-28 13:38:00) [13]
> Буду пробовать создавать в других системных папках
вот этого не надо
лучше "%userprofile%\Local Settings\Application Data\" или "%userprofile%\Local Settings\temp"
Правильный$Вася (2009-01-28 13:36:00) [14]
{I-}
rewrite
{I+}
if( IOResult ...