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;
