Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   debug de un DM (https://www.clubdelphi.com/foros/showthread.php?t=97557)

ArtPortEsp 27-06-2025 00:55:09

debug de un DM
 
Estoy depurando una aplicacion de terceros, es C/S (DataSnap)

Estoy depurando la parte del cliente, para esto, detuve el servidor de base de datos, para que la aplicacion enviara error; no deberia "tronar" al crear la forma principal y los DataModule, pero asi pasa...

Hay un DataModule Mclient, al crearse este intenta abrir una conexion en otro datamodule DataM. Sin embargo, ya revise el DFM y quite las referencias a la conexion FDCIRA en DataM (al menos en los 3 FDQuerys que habia ahi).

La enorme mayoria de componentes que hay en Mclient son FDMemtable y practicamente todos tienen campos persistentes.

La IA indica que el problema puede estar en un LookupDataset de alguno de los campos persistentes, ya que la aplicacion trata de activar la conexion en FDCIRA en el evento:

Código:

constructor TMclient.Create(AOwner: TComponent);
begin
  OutputDebugString('** Constructor de MClient INICIO');
  inherited;
  OutputDebugString('** Constructor de MClient POST inherited');

  DumpFDState(Self);
  OutputDebugString('** Constructor de MClient FIN');

  FInstanceOwner := True;
end;

justo en la linea inherited, que es donde se "carga" y se crean todos los componentes referenciados en el dfm.

Ahora bien, se que puedo ir componente por componente tratando de encontrar al "culpable", pero al ser tantos componentes FDMemTable cada uno con varios campos persistentes, me pregunto si alguno de uds conoce algun metodo o herramienta para depurar mas facil este error.

Neftali [Germán.Estévez] 27-06-2025 09:19:07

Se me ocurre que revises que los componentes no estén activos en diseño.
Y una vez creados (después del create, en el Show , por ejemplo) los actives.

ArtPortEsp 27-06-2025 18:27:14

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 565895)
Se me ocurre que revises que los componentes no estén activos en diseño.
Y una vez creados (después del create, en el Show , por ejemplo) los actives.

Bueno, exactamente eso es lo que quiero hacer, pero buscaba una forma de hacerlo automaticamente, finalmente desarrolle una pequeña utilidad que revisa los dfm en una carpeta buscando ciertas propiedades como ( Active = True o Connected = True ); y las reemplaza por False (creando un backup antes).

Me ahorro mucho tiempo de trabajo.


La franja horaria es GMT +2. Ahora son las 16:44:00.

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