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
- 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\
- 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;
- 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);
- Asegúrate de que las variables internas que arman el texto de SQL también usen AnsiString si están limitadas.
- 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.