Ver Mensaje Individual
  #2  
Antiguo 21-03-2025
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.405
Reputación: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Efectivamente es una limitación conocida del componente TIBSQLMonitor de IBX (InterBase Express), que usa un buffer interno limitado para el texto del evento OnSQL.
Te copio lo respondido por chatgpt:
�� Problema

La variable EventText que se pasa al evento OnSQL es de tipo string[255] en la unit IBX.SQLMonitor.pas, lo que limita el tamaño del SQL capturado a 255 caracteres.
Esto se puede solucionar modificando la unidad fuente IBX.SQLMonitor.pas.
✅ Solución: modificar IBX.SQLMonitor.pas
  1. Localiza la unidad IBX.SQLMonitor.pas en tu instalación de Delphi.
    Suelen estar en la carpeta de los sources de IBX o Delphi, algo como:
    C:\Program Files (x86)\Borland\DelphiX\Source\IBX\
  2. Abre la unidad y busca esta sección en el tipo TIBSQLMonitor:
    TIBSQLMonitor = class(TComponent) ... private ... procedure DoSQL(EventText: String); ... Y también el evento público:
    type TSQLMonitorEvent = procedure(EventText: String) of object;
  3. �� Cambia el tipo del parámetro de String a AnsiString o WideString (según lo que uses):
    TSQLMonitorEvent = procedure(EventText: AnsiString) of object; Y cambia también la declaración de DoSQL:
    procedure DoSQL(EventText: AnsiString);
  4. Asegúrate de que las variables internas que arman el texto de SQL también usen AnsiString si están limitadas.
  5. Recompila el proyecto y recompila cualquier paquete que use esta unidad si es necesario.
⚠️ Notas importantes
  • Si estás usando Delphi 6, como me comentaste hace poco, es posible que debas adaptar un poco según el tipo de String que estés usando. En Delphi 6, String es de hecho un AnsiString, pero si en alguna parte se define como ShortString o string[255], ahí está el problema.
  • Si usas Packages, asegúrate de recompilar IBX y cualquier paquete que lo use.
  • Alternativamente, podrías copiar IBX.SQLMonitor.pas a tu proyecto, modificarlo ahí, y asegurar que tu proyecto use tu versión modificada, no la compilada por defecto en la BPL o DCU original.
Responder Con Cita