Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema al cargar archivo ini (https://www.clubdelphi.com/foros/showthread.php?t=76948)

kurono 07-12-2011 03:24:18

Problema al cargar archivo ini
 
hola amigos tengo un inconveniente para cargar un archivo ini el codigo me funciona bien en una ventana (formulario) que tengo pero puse el mismo codigo en el evento activate del formulario principal y no me funciona no da error pero no hace nada aqui parte del codigo

Código Delphi [-]
 Ub:=ChangeFileExt(Application.ExeName,'.ini');
     ini:=TIniFile.Create(Ub);

if ini.ReadString(CONFIG_SECTION, 'Automatico', STR_EMPTY) = 'Activado' then
        btn_Backup.Enabled:=False
        else
     if ini.ReadString(CONFIG_SECTION, 'Manual', STR_EMPTY) = 'Activado' then
        btn_Backup.Enabled:=True;

ecfisa 07-12-2011 06:04:59

Hola Kurono.

No sé si estoy en lo correcto, pero parece que hay un TButton (btn_Backup) que en su evento OnClick permite realizar un backup cuando el modo es Manual y si el modo es Automático tiene que estár deshabilitado.

Tampoco sé ante que evento debe seleccionarse el modo, ni la procedencia de las variables CONFIG_SECTION y STR_EMPTY. De modo que elegí el evento OnClick de dos TButton para cambiar el estado, así como también usé constantes en reemplazo de las variables.
Funciona correctamente tanto en el evento OnCreate u OnActivate del form, aunque si se usa OnCreate para simplificar, la grabación conviene hacerla en el evento OnClose.

En el ejemplo oculto a Form1 y luego lo hago visible en el evento OnClose de OtroForm para asegurar que el evento OnActivate del primero se dispare.

Form1:
Código Delphi [-]
...
uses IniFiles, Unit2;

{ Activar/Desactivar btn_Backup }
procedure TForm1.FormActivate(Sender: TObject);
begin
  with TIniFile.Create(ChangeFileExt(Application.ExeName,'.INI')) do
  try
    if ReadString('CONFIGURACION', 'Automatico', 'Activado') = 'Activado' then
      btn_Backup.Enabled := False;
    if ReadString('CONFIGURACION','Manual', 'Activado') = 'Activado' then
      btn_Backup.Enabled := True;
  finally
    Free;
  end;
end;

{ Modo automático }
procedure TForm1.btActivarAutomaticoClick(Sender: TObject);
begin
  with TIniFile.Create(ChangeFileExt(Application.ExeName,'.INI')) do
  try
    WriteString('CONFIGURACION', 'Automatico', 'Activado');
    WriteString('CONFIGURACION', 'Manual', 'Desactivado');  // Podría ser cualquier cadena <> de 'Activado'
  finally
    Free;
  end;
end;

{ Modo Manual }
procedure TForm1.btActivarManualClick(Sender: TObject);
begin
  with TIniFile.Create(ChangeFileExt(Application.ExeName,'.INI')) do
  try
    WriteString('CONFIGURACION', 'Automatico', 'Desactivado');
    WriteString('CONFIGURACION', 'Manual', 'Activado')
  finally
    Free;
  end;
end;

{ Llamar a OtroForm }
procedure TForm1.btOtroFormClick(Sender: TObject);
begin
  Visible:= False;
  with TOtroForm.Create(Self) do
  try
    ShowModal;
  finally
    Free;
  end;
end;
...

OtroForm:
Código Delphi [-]
...
implementation

uses Unit1;
...
procedure TOtroForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Form1.Visible:= True;
  Action:= caFree;
end;
Espero que el ejemplo te sea de utilidad.

Un saludo.

duilioisola 07-12-2011 09:29:59

Deberías verificar qué es lo que contienen las variables:
Código Delphi [-]
var
  ...
  Automatico, Manual: string;
begin
...
Ub:=ChangeFileExt(Application.ExeName,'.ini');
     ini:=TIniFile.Create(Ub);

Automatico := ini.ReadString(CONFIG_SECTION, 'Automatico', STR_EMPTY);
Manual := ini.ReadString(CONFIG_SECTION, 'Manual', STR_EMPTY);

// Muestro lo que contienen las variables para poder verificar
// - Que estoy abriendo el ini correcto
// - Que estoy leyendo la seccion correcta
// - Que si no encuentro el valor me devolverá lo que hay en STR_EMPTY 
// - Que valor obtuvo al leer Automatico
// - Que valor obtuvo al leer Manual
ShowMessage('UB: ' + ub);
ShowMessage('CONFIG_SECTION: ' + CONFIG_SECTION);
ShowMessage('STR_EMPTY: ' + STR_EMPTY);
ShowMessage('Automatico: ' + Automatico );
ShowMessage('Manual : ' + Manual);

if Automatico = 'Activado' then
        btn_Backup.Enabled:=False
        else
     if Manual = 'Activado' then
        btn_Backup.Enabled:=True;
...

kurono 08-12-2011 00:49:05

analizare los codigo luego les cuento

kurono 08-12-2011 02:08:34

Amigos e resuelto el problema lo que pasaba era que no estaba leyendo la seccion correcta del archivo como lo menciono duilioisola

la seccion que tenia era Config_Bd y estaba leyendo ConfigBd


La franja horaria es GMT +2. Ahora son las 22:13:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi