quarta-feira, 8 de setembro de 2010

Lendo Configurações de Conexão a Partir de Arquivo Texto

Na verdade isso é mais uma dica do que um artigo. Vamos abrir um arquivo texto com configurações, ler estas configurações e aproveitá-las para a conexão com o banco.
Existem também componentes prontos para isso, porém eu tento sempre usar o mínimo de componentes externos nos meus sistemas. Outra coisa também que se utiliza é o registro do Windows ao invés de arquivo texto, mas eu ainda prefiro a simplicidade de abrir um arquivo texto.
O código fonte é bastante simples e fácil de entender, eu sempre deixo esse código no evendo Before Connect do componente de conexão com o banco.
procedure TFrmPrincipal.ConexaoBeforeConnect(Sender: TObject);
var f:TextFile;
    h,p,base:String;
begin
  // Verifica se o arquivo com
  // host do db existe
  AssignFile(f,'conexao.ini');
  if not FileExists('conexao.ini') then
  begin
    { Se o arquivo de configuração não existir, o
      sistema vai criá-lo com o servidor 192.168.0.1,
      porta 5432-porta padrão do PostgreSQL e com o banco
      chamado database1
    }
    try
      Rewrite(f);
      WriteLn(f,'host=192.168.0.1'); 
      WriteLn(f,'porta=5432');
      WriteLn(f,'base=database1');
    finally
      CloseFile(f);
    end;
  end;
  try
    Reset(f);  // Abre o arquivo
    { Aqui o sistema está lendo linha por linha,
      a primeira linha fica o hostname ou ip do servidor,
      na segunda a porta e na última o nome da base. 
      No arquivo esses dados têm que estar exatamente 
      nesta ordem.
      O nome do meu componente de conexão é "Conexao"
      e estou usando o Zeos. 
      Outra coisa importante, os dados são lidos 
      considerando que estão na posição de coluna 
      correta, ex.: o host na coluna 6
    }
    Readln(f, h);
    Conexao.HostName:=Copy(h,6,Length(h)-5);
    Readln(f, p);
    Conexao.Port:=StrToInt(Copy(p,7,Length(p)-6));
    Readln(f, base);
    Conexao.Database:=Copy(base,6,Length(base)-5);
    CloseFile(f);
  except
    on e: Exception do
    begin
      { Caso não consiga abrir o arquivo, dá a mensagem 
        de erro e fecha o sistema}
      ShowMessage('Erro ao abrir arquivo de '+
                  'configuração. Erro:'+#10+#13+
                   e.Message);
      Application.Terminate;
    end;
  end;
end;

Nenhum comentário:

Postar um comentário