Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Realizar UniDAC Conexión por código (https://www.clubdelphi.com/foros/showthread.php?t=95417)

darkamerico 03-10-2021 17:52:14

Realizar UniDAC Conexión por código
 
Saludos estimados amigos, un saludo a todos, aquí nuevamente con una duda cuasi existencial...
Sucede que en mis aplicaciones deseo usar un archivo INI con los siguientes valores:


Tengo el componente colocado en mi DataModule con los datos en blanco:


El problema surge cuando deseo efectivamente utilizar los valores del INI y pasarlos al componente TUniConection, esto lo realizo en el evento OnCreate del Formulario de Login:

Código Delphi [-]
procedure TfrmLogin.FormCreate(Sender: TObject);
begin
  if FileExists(ChangeFileExt(Application.ExeName,'.ini')) then
  begin
    ServerIP:=trim(Ini.GetStrValue('SERVER','SERVER_IP'));
    ServerPort:=trim(Ini.GetStrValue('SERVER','SERVER_PORT'));
    ServerDB:=trim(Ini.GetStrValue('SERVER','SERVER_DB'));
    ServerUser:=trim(Ini.GetStrValue('SERVER','SERVER_USER'));
    ServerPWD:=trim(Ini.GetStrValue('SERVER','SERVER_PWD'));
  end
  else
  begin
    Ini.SetStrValue('SERVER','SERVER_IP','localhost');
    Ini.SetStrValue('SERVER','SERVER_PORT','1433');
    Ini.SetStrValue('SERVER','SERVER_DB','IEGESTIONA');
    Ini.SetStrValue('SERVER','SERVER_USER','sa');
    Ini.SetStrValue('SERVER','SERVER_PWD','18159421');
    ServerIP:=Ini.GetStrValue('SERVER','SERVER_IP');
    ServerPort:=Ini.GetStrValue('SERVER','SERVER_PORT');
    ServerDB:=Ini.GetStrValue('SERVER','SERVER_DB');
    ServerUser:=Ini.GetStrValue('SERVER','SERVER_USER');
    ServerPWD:=Ini.GetStrValue('SERVER','SERVER_PWD');
  end;

  dmMain.conn.LoginPrompt:=false;
  dmMain.conn.Server:=ServerIP;
  dmMain.conn.Port:=StrToInt(ServerPort);
  dmMain.conn.Database:=ServerDB;
  dmMain.conn.Username:=ServerUser;
  dmMain.conn.Password:=ServerPWD;
  dmMain.conn.connected := True;
end;

El error que obtengo cuando corro paso a paso la aplicación se muestra a continuación:


Nota:
Estoy usando Delphi Enterprise 10.3.2 y UniDAC 8.2.5

Amigos, al cambiar todo el bloque de código de OnCreate() hacia OnActivate() obtengo este error aun antes de siquiera llegar a la primera linea:


Gracias anticipadas compañeros por la ayuda

luisgutierrezb 03-10-2021 21:44:03

Me suena a qué no está creado el datamodule

aledieb 05-10-2021 17:08:57

Hola, si no me equivoco el puerto debe ser integer.

darkamerico 06-10-2021 04:07:00

Gracias por responder
 
Amigos míos, no he podido dar con la solución a este problema.
Reproducí esta situación en un proyecto vacío, solo con un INI y un DataModule y si funcionó, pero aquí no se que pasa...

Atte.
Americo

movorack 06-10-2021 14:44:34

Cita:

Empezado por luisgutierrezb (Mensaje 543286)
Me suena a qué no está creado el datamodule

Cita:

Empezado por darkamerico (Mensaje 543373)
Amigos míos, no he podido dar con la solución a este problema.
Reproducí esta situación en un proyecto vacío, solo con un INI y un DataModule y si funcionó, pero aquí no se que pasa...

¡Hola, darkamerico!

¿Verificaste lo que indica luisgutierrezb, que el datamodule esté creado en el momento de inicializarlo?

Según el código que nos compartes, estás configurando la conexión en el FormCreate. Pero si el datamodule no ha sido creado para ese momento, te generará el error de memoria que muestras.

Puede que esté así en tu proyecto:

Código Delphi [-]
  Application.CreateForm(TfrmLogin, frmLogin); //Aquí ejecuta el TfrmLogin.FormCreate y genera error
  Application.CreateForm(TdmMain, dmMain);

Podrías verificar que primero sea creado el DataModule

Código Delphi [-]
  //Se crea el datamodule
  Application.CreateForm(TdmMain, dmMain); 

  //Ejecuta el TfrmLogin.FormCreate y configura la conexión
  Application.CreateForm(TfrmLogin, frmLogin);


La franja horaria es GMT +2. Ahora son las 14:31:59.

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