verificar se um diretório existe....

Delphi

26/02/2003

Olá,

será que você poderia me ajudar??? Estou precisando saber se um determinado diretório existe, se não existir preciso criá-lo. O problema é que não sei fazer nenhuma das coisas descritas acima.


Desde já muito obrigado....


Lauro Emerson
balceiro@bol.com.br


Anonymous

Anonymous

Curtidas 0

Respostas

Lfernandos

Lfernandos

26/02/2003

if not DirectoryExists(Path)then begin
if not CreateDir(Path) then begin
ForceDirectories(Path);
end;
end;

A função DirectoryExists testa se o dir existe.
A CreateDir tenta criar o diretório se falhar a ForceDirectories cria o diretório.


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

26/02/2003

Olá, será que você poderia me ajudar??? Estou precisando saber se um determinado diretório existe, se não existir preciso criá-lo. O problema é que não sei fazer nenhuma das coisas descritas acima. Desde já muito obrigado.... Lauro Emerson balceiro@bol.com.br

Colega,

Primeiramente coloque FileCtrl na uses da Interface;

O DOS e Windows só permitem criar um diretório de cada vez. Por exemplo, para criar o diretório C:\APPS\SALES\LOCAL os diretórios APPS e SALES devem existir antes que o diretório LOCAL possa ser criado.
Use ForceDirectories para criar um diretório e todos os diretórios ´pais´ que ainda não existam.
ForceDirectories é uma procedure recursiva, bem como, já tem implementada os testes para verificar a existência do diretório. Portanto, não é necessário verificar se o diretório existe, pois se já existir ela abandona a execução.

var cDiretorio: String;
begin
cDiretorio:= ´C:\APPS\SALES\LOCAL´;
  ForceDirectories(cDiretorio);
end;



GOSTEI 0
Nildo

Nildo

26/02/2003

Ps.: Se existir o diretório, ele NÃO abandona a operação como Zanela disse. Ele apenas parte para o outro diretori oa ser criado. Em fim, ele força de qualquer maneira a criação de um caminho completo. Se existir ele pula, se nao existir ele cria.

falowwwwssss


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

26/02/2003

Ps.: Se existir o diretório, ele NÃO abandona a operação como Zanela disse. Ele apenas parte para o outro diretori oa ser criado. Em fim, ele força de qualquer maneira a criação de um caminho completo. Se existir ele pula, se nao existir ele cria. falowwwwssss


Se existir ele pula, se nao existir ele cria. ?????????

procedure ForceDirectories(Dir: string);
begin
  if Length(Dir) = 0 then
    raise Exception.Create(SCannotCreateDir);
  if (AnsiLastChar(Dir) <> nil) and (AnsiLastChar(Dir)^ = ´\´) then
    Delete(Dir, Length(Dir), 1);
  if (Length(Dir) < 3) or DirectoryExists(Dir)
    or (ExtractFilePath(Dir) = Dir) then Exit; // avoid ´xyz:\´ problem.
  ForceDirectories(ExtractFilePath(Dir));
  CreateDir(Dir);
end



GOSTEI 0
POSTAR