Curso de Delphi - Aula 07
By Tiago Assis

Cronograma da aula
- Criar pasta pelo Delphi

Criação de pastas pelo Delphi é muito importante ao programador que planeja que seu software trabalhe com criações automáticas de pastas. Um exemplo é quando um sistema salva um arquivo de log, a pasta desse log poderá ser criada automaticamente para que o mesmo seja salvo.


Criando Pasta
Vamos criar um novo projeto no Delphi, organize-o da forma que você desejar... Adicione os seguintes componentes no mesmo:

- 4 Labels (Paleta Standard)
- 1 Edit (Paleta Standard)
- 1 Button (Paleta Standard)
- 1 DirectoryListBox (Paleta Win 3.1)
- 1 DirectoryListBox (Paleta Win 3.1)

Altere as propriedades dos seguintes componentes:

- Label1 (Caption: Disco)
- Label2 (Caption: Pasta)
- Label4 (Caption: Nome da nova pasta)
- Button1 (Caption: Criar Pasta)
- DirectoryListBox1 (DirList: DirectoryListBox1)
- DirectoryListBox1 (DirLabel: Label3)

Organize seu formulário da maneira que está abaixo:



No evento OnClick do button1 adicione o seguinte código:

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
Local: String; // Variável da localização selecionada no DirectoryListBox
begin
{Localização do DirectoryListBox1, usa-se uma contra-barra pelo fato da mesma
ser necessária para a criação de uma nova pasta na hora de descriminar a
localização inteira para o delphi}
Local:=DirectoryListBox1.Directory+'\';
  if not DirectoryExists(Local+Edit1.Text) then begin  // Caso não exista a pasta do edit1
    try // se rodar tudo corretamente
      CreateDir(Local+Edit1.Text); // cria a pasta no local indicado com o nome indicado
      ShowMessage('Pasta "'+Edit1.Text+'" criada com sucesso!'); // Mensagem de sucesso
    except // se houver qualquer erro ao tentar criar a pasta
      ShowMessage('Erro ao tentar criar a pasta "'+Edit1.Text+'"!'); // Mensagem de erro
    end;
  end;
end;
Download da Source: [Somente membros podem ver os links. ]


No exemplo acima foi relativamente fácil a criação de uma pasta... Mas e se desejarmos que o software, crie uma pasta de acordo com a localização do meu executável? Por exemplo, quero que o software crie uma pasta chamada Log bem onde o executável está. Vamos supor que o executável pode ser copiado de um local para outro local diferente... Como fazer o Delphi entender onde está meu executável independentemente de quantas vezes ele foi movido de lugar? Abaixo um código bem simples sobre isso:

Código:
procedure CriaPasta();
var
Local, NomePasta: String; // Variável da localização e nome da nova pasta
begin
{Para pegarmos a mesma pasta onde o executável se encontra usamos o ".\"
chamamos isso de raiz do executável. Para subirmos 1 diretório acima, usa-se o ..\}
Local:='.\';
NomePasta:='Teste';
  if not DirectoryExists(Local+NomePasta) then begin  // Caso não exista a pasta da variável NomePasta
    try // se rodar tudo corretamente
      CreateDir(Local+NomePasta); // cria a pasta no local indicado com o nome indicado
      ShowMessage('Pasta "'+NomePasta+'" criada com sucesso!'); // Mensagem de sucesso
    except // se houver qualquer erro ao tentar criar a pasta
      ShowMessage('Erro ao tentar criar a pasta "'+NomePasta+'"!'); // Mensagem de erro
    end;
  end;
end;
Então para esclarecermos a situação, quando queremos a localização raiz de nosso executável Delphi, utilizamos ".\" e quando queremos subir uma pasta acima de onde nosso executável está, utilizamos o "..\".

No caso de eu querer criar uma pasta dentro de outra pasta onde está minha aplicação, se faria desse modo: ".\PastaDestino\" e depois criaria a nova pasta...

Se ficou alguma dúvida nessa aula, pode postar abaixo também^^

Abraços a todos.