Arquivos INI
Leitura e Configuração
Trabalhando constantemente em desenvolvimento de aplicações cliente/servidoras via dbExpress, verificou-se a necessidade de uma ferramenta que permitisse leitura e configuração de qualquer arquivo de parâmetros de configuração (arquivos INI). Haja vista que o trabalho de edição de determinados arquivos INI torna-se cansativo e muito perigoso em se trabalho de arquivos com mais de 30 (trinta) parâmetros de configuração.
Logo, a aplicação que questão (CONFIG_ARQ_INI) permite a leitura de qualquer arquivo INI e sua edição sem nenhum dano a estrutura do mesmo.
Interfase do Arquivo INI
A grande idéia desta aplicação é interpretar para o usuário em forma de objetos todos os parâmetros contidos em um arquivo INI. E, com este objetivo usamos os seguintes componentes:
p_banner: TPanel;
lbl_titulo: TLabel;
img: TImage;
vle_ini: TValueListEditor;
Label2: TLabel;
Msg: TMemo;
btTestar: TBitBtn;
btDatabase: TBitBtn;
btCancelar: TBitBtn;
btOk: TBitBtn;
lsb_secoes: TListBox;
vle_sec_values : TValueListEditor;
Banco: TSQLConnection;
Abrir_Banco: TOpenDialog;
A disposição dos objetos no Form ficarão como mostra a Figura 1.
Figura 1.
É importante citar que o exemplo aqui exposto está utilizando como base a leitura e edição de um arquivo INI de uma determinada aplicação cliente/servidora. Mas a essência deste é a leitura de um determinado arquivo pela procedure FormCreate e a gravação da edição do mesmo pela procedure btOkClick, como mostra a Listagem 1.
Listagem 1. Unidade de Código
unit u_ler_ini;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, ValEdit, ExtCtrls, StdCtrls, Buttons, IniFiles, XPMan,
DBXpress, DB, SqlExpr;
type
Tfrm_configs = class(TForm)
p_banner: TPanel;
lbl_titulo: TLabel;
img: TImage;
vle_ini: TValueListEditor;
Label2: TLabel;
msg: TMemo;
btTestar: TBitBtn;
btDatabase: TBitBtn;
btCancelar: TBitBtn;
btOk: TBitBtn;
lsb_secoes: TListBox;
vle_sec_values: TValueListEditor;
xp: TXPManifest;
Banco: TSQLConnection;
Abrir_Banco: TOpenDialog;
procedure FormCreate(Sender: TObject);
procedure btOkClick(Sender: TObject);
procedure btCancelarClick(Sender: TObject);
procedure btTestarClick(Sender: TObject);
procedure btDatabaseClick(Sender: TObject);
private
{ Private declarations }
a_ini : TIniFile;
public
{ Public declarations }
property Configuracoes_INI : TIniFile read a_ini write a_ini;
end;
var
frm_configs: Tfrm_configs;
implementation
{$R *.dfm}
procedure Tfrm_configs.FormCreate(Sender: TObject);
var
i,
x : Integer;
begin
x := 1;
Configuracoes_INI := TIniFile.Create(ExtractFilePath(Application.ExeName) +
'Finance.ini');
Configuracoes_INI.ReadSections(lsb_secoes.Items);
for i := 0 to lsb_secoes.Items.Count - 1 do begin
Configuracoes_INI.ReadSectionValues(lsb_secoes.Items. Strings[i],
msg.Lines);
vle_ini.Strings.AddStrings(msg.Lines);
while x <= vle_ini.Strings.Count do begin
vle_sec_values.Strings.Add(vle_ini.Keys[x] + '=' +
lsb_secoes.Items. Strings[i]);
Inc(x);
end;
end;
msg.Lines.Clear;
end;
procedure Tfrm_configs.btOkClick(Sender: TObject);
var
x : Integer;
begin
for x := 1 to vle_ini.Strings.Count do begin
Configuracoes_INI.WriteString(vle_sec_values.Values[vle_ini.Keys[x]],
vle_ini.Keys[x],
vle_ini.Values[vle_ini.Keys[x]]);
Configuracoes_INI.UpdateFile;
end;
Application.MessageBox('Alterações no Arquivo INI Gravadas com Sucesso !!!',
'Configurações', MB_ICONINFORMATION);
Close;
end;
procedure Tfrm_configs.btCancelarClick(Sender: TObject);
begin
Close;
end;
procedure Tfrm_configs.btTestarClick(Sender: TObject);
begin
try
with Banco do begin
Connected := not True;
Params.Values['DriverName'] := vle_ini.Values['Drive'];
Params.Values['Database'] := vle_ini.Values['Servidor'] + ':' +
vle_ini.Values['Base'];
Params.Values['User_Name'] := vle_ini.Values['Usuario'];
Params.Values['Password'] := vle_ini.Values['Senha'];
Params.Values['SQLDialect'] := vle_ini.Values['Dicionario'];
Params.Values['RoleName'] := vle_ini.Values['Estacao'];
Connected := True;
end;
lbl_titulo.Caption := 'Conecção Exefuada com Sucesso !!!';
msg.Text := 'Conecção Exefuada com Sucesso !!!';
Application.MessageBox('Conecção Exefuada com Sucesso !!!',
'Banco', MB_ICONINFORMATION);
except
on E : Exception do begin
msg.Text := E.Message;
msg.Lines.Add('---------------------------------------' +
'---------------------------------------' +
'------------------');
msg.Lines.Add('Erro na conecção !!!');
msg.Lines.Add('---------------------------------------' +
'---------------------------------------' +
'------------------');
lbl_titulo.Caption := 'Erro na conecção !!!';
end;
end;
end;
procedure Tfrm_configs.btDatabaseClick(Sender: TObject);
begin
with vle_ini.Strings do begin
Abrir_Banco.FileName := Values['Base'];
if Abrir_Banco.Execute then
Values['Base'] := Abrir_Banco.FileName;
end;
end;
end.
Até o próximo artigo.
Obrigado.
|