Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Узнать могу ли я создать файл в папке


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 ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо