Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > создать папку в Windows


Автор: mvdr 14.1.2005, 19:27
мне надо сохранить файл в папку, которой может и не быть на диске. Как динамически создать эту папку?

Автор: Alex 14.1.2005, 19:40
Код

function CheckDir(Dir: string): Boolean;
// Если дириктория не существует, то она создается
begin
 Result := True;
 if Length(Dir) = 0 then begin
   Result:= False;
   Exit;
 end;
 Dir := ExcludeTrailingPathDelimiter(Dir);
// 24.01.04
 if (Length(Dir) < 3) and not DirectoryExists(Dir) then begin
   Result:= False;
   Exit;
 end;
///////////
 if (Length(Dir) < 3) or DirectoryExists(Dir)
     or (ExtractFilePath(Dir) = Dir) then
   Exit;
 Result := CheckDir(ExtractFilePath(Dir)) and CreateDir(Dir) and DirectoryExists(Dir);
end;

Автор: mvdr 14.1.2005, 19:48
я конечно не дурак, но что то недопонимаю.
Допустим мне надо создать C:\\Program Files\papka\ и туда запихивать уже файлы.
КАК?

Автор: p0s0l 14.1.2005, 22:10
Еще можно использовать ForceDirectories
ForceDirectories ('C:\Program Files\papka');

Функцию Alex'а можно использовать точно также...

Автор: Alex 14.1.2005, 22:55
По идеи можно и ForceDirectories, но я в свое время наткнулся на одну проблему. Дело в том, что у меня в программе путь, который может подаваться на вход этой функции может содержать только диск при этом такого диска может не существовать в системе и если такой путь подать на вход ForceDirectories то она вернет истину, то есть она якобы создала этот путь. Такое поведение для меня недопустимо. Поэтому и переписывал ее.

Для воспроизведения ошибки выполните код:
Код

 if ForceDirectories('p:\') then
   ShowMessage('Ok')
 else
   ShowMessage('Not');

 if CheckDir('p:\') then
   ShowMessage('Ok')
 else
   ShowMessage('Not');

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)