Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Heredar Objetos ADO (https://www.clubdelphi.com/foros/showthread.php?t=36626)

mcarazas 19-10-2006 00:11:48

Heredar Objetos ADO
 
Hola amigos del foro:

Tengo un formulario MDI el cual se conecta con ADOConnection al motor de la base de datos, este formulario llama varias Dll's las cuales tambien necesitan esa conexion el objeto las paso como parametros les muestro el codigo que utilizo:
Código Delphi [-]
function Crear_form(h: Thandle; ADOCon: TADOConnection; VecInformacion : Array of String): Integer;
begin
  Application.Handle := h;
  Application.CreateForm(TfrmEVentas, frmEVentas);
with frmEVentas do
  begin
      SQLUno.Connection:= ADOCon;
      SQLDos.Connection:= ADOCon;
      SQLTres.Connection:= ADOCon;
      SQLBuscar.Connection := ADOCon;

      ShowModal;
      Result := StrToInt('0');
      while frmEVentas <> nil do
           FreeAndNil(frmEVentas);
  end;
end;
hasta ahí todo funciona muy bien, el problema es que necesito copiar la conexion del Objeto en el formulario de la Dll, si lo copio este objeto a otro objeto de la misma clase tengo un error al eliminar el objeto que cree por que al Eliminar este objeto se elimina los dos objetos y yo no quiero que el objeto del MDI se ilimine por que es como una variable global que me sirve para toda la aplicacion, estaba pensando en la herencia. Espero puedan ayudarme gracias de antemo.

luisgutierrezb 19-10-2006 00:57:15

no necesitas herencia, necesitas el "poder" de los objetos de delphi, tu codigo quedaria asi...

Código Delphi [-]
//...
SQLUno.Assign(ADOCon);
//...

mcarazas 19-10-2006 02:22:36

Copiar Objetos
 
Gracias por responder, pero creo que no entendiste mi pregunta, lo que necesito es copiar objetos por ejemplo
Código Delphi [-]
ADOCopia := ADOCon;
donde ADOCon es la como la variable global lo utilizo en todo el programa.
ADOCopia es el objeto que utilizare en mi Dll
Mi problema es, cuando elimino ADOCopia también se elimina ADOCon, y cuando se elimina esté objeto ya no puedo utilizar mas la conexion. Espero me entiendas está vez.

Neftali [Germán.Estévez] 19-10-2006 10:07:20

Yo creo que SÍ entendieron tu pregunta y te la contesaron bien.

Si haces:
Código Delphi [-]
  ADOCopia := ADOCon;
No creas un nuevo objeto, sino un apuntador al objeto anterior; Tienes dos apuntadores, pero un sólo objeto; Por lo tanto al destruirlo utilizando cualquiera de los dos apuntadores destruyes el único objeto que tienes.

La forma de crear una copia del objeto, es crear uno nuevo y asignarle el contenido del que tienes utilizando:

Código Delphi [-]
  ADOCopia := TTipo.Create();    // Crear
  ADOCopia.Assign(ADOCon);     // copiar el contenido del existente


Es este caso tienes dos apuntadores y dos objetos. Creo que es esto lo que intentaban decirte.


La franja horaria es GMT +2. Ahora son las 15:03:51.

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