Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Como compartir metodos entre formularios y tambien la conexion a postgres?? (https://www.clubdelphi.com/foros/showthread.php?t=81594)

aviatorz 28-11-2012 18:52:56

Como compartir metodos entre formularios y tambien la conexion a postgres??
 
En Lazarus 1.0.2, estoy intentando hacer una clase que solo contenga métodos y en esos métodos se realice cualquier operación y desde los formularios llamar a esos métodos.

El problema es el siguiente cuando quiero por ejemplo inicializar la conexión de postgres.
Código:

...
class var
      {Variables de clases}
      SQLquery:TSQLQuery;
      Datasource:TDataSource;
      Transaccion:TSQLTransaction;
      PQConexion:TPQConnection; 
...
class procedure StaticData.Inicializa_conexion(usuario,contrasena,host,db:string);
begin
    PQConexion.hostname:=host;
    PQConexion.databaseName:=db;
    PQConexion.username:=usuario;
    PQConexion.password:=contrasena;

    PQConexion.transaction:= Transaccion;
    Transaccion.DataBase:=PQConexion;
    SQLQuery.Transaction:=Transaccion;
    Datasource.DataSet:=SQLQuery;

    try
        PQConexion.connected:=true;
        Application.MessageBox(PChar('Conexion realizada con exito'),PChar('Conexion'),MB_ICONINFORMATION);
    except
      on e:exception do
      begin
        Application.MessageBox(PChar('Ha ocurrido el siguiente Error: '+e.Message),PChar('Error'),MB_ICONINFORMATION);
        PQConexion.connected:=false;
      end;
    end;
end;

me aparece un error que según entiendo tiene que ver algo con la instanciacion del objeto PQConexion, el error dice:
Cita:

El proyecto x ha lanzado una excepcion de la clase 'External:SIGSEGV'. en direccion 403AD0
Corrí el proyecto paso a paso y el error se da cuando intenta hacer la primera asignación al PQConexion
Código:

PQConexion.hostname:=host;
Por eso supongo que tiene que ver algo con instanciar el PQConexion, que opinan?

aviatorz 28-11-2012 22:11:43

Solucion al error!!
 
Al final la solución no estaba tan difícil, solo habia que instanciar los objetos de la siguiente manera
Código:

PQConexion:=TPQConnection.Create(nil);
Transaccion:=TSQLTransaction.Create(nil);
SQLQuery:=TSQLQuery.Create(nil);
Datasource:=TDataSource.Create(nil);

Tambien funciona de esta manera
Código:

PQConexion:=TPQConnection.Create(Application);
Transaccion:=TSQLTransaction.Create(Application);
SQLQuery:=TSQLQuery.Create(Application);
Datasource:=TDataSource.Create(Application);


rretamar 29-11-2012 14:57:02

Se agradece el aporte.


La franja horaria es GMT +2. Ahora son las 23:18:23.

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