¿Es posible desmantelar nombres como estos en Delphi? En caso afirmativo, ¿dónde obtengo más información?Delphi: unmangle nombres en BPL
Ejemplo de un mensaje de error donde no puede encontrar una entrada determinada en dbrtl100.bpl Quiero saber qué función exacta no puede encontrar (unidad, clase, nombre, parámetros, etc.).
---------------------------
myApp.exe - Entry Point Not Found
---------------------------
The procedure entry point @[email protected][email protected]@IDENTIFIEROption could not be located in the dynamic link library dbrtl100.bpl.
---------------------------
OK
---------------------------
Sé que es el método GetTableNameFromSQLEx en la unidad DbCommon (tengo Delphi con las fuentes RTL/VCL), pero a veces me encuentro con aplicaciones en las que no todo el código está disponible para (sí, los clientes deben comprar siempre todo el código fuente para cosas de terceros, pero a veces no lo hacen).
Pero diga que este es un ejemplo para el que no tengo el código, o solo los archivos de interfaz (BDE.INT ¿alguien?) ¿Qué parámetros tiene (es decir, qué sobrecarga potencial)? ¿Qué tipo de devolución tiene?
¿Es este problema igual para cualquier versión de Delphi?
--jeroen
Editar 1:
Gracias a Rob Kennedy: tdump -e dbrtl100.bpl hace el truco. No hay necesidad de -um en absoluto:
C:\WINDOWS\system32>tdump -e dbrtl100.bpl | grep GetTableNameFromSQLEx
File STDIN:
00026050 1385 04AC __fastcall Dbcommon::GetTableNameFromSQLEx(const System::WideString, Dbcommon::IDENTIFIEROption)
Editar 2:
Gracias a TOndrej que encontraron esta German EDN article (English Google Translation). Ese artículo describe el formato con bastante precisión, y debería ser posible crear algún código Delphi para destrabar esto.
Pitty que el sitio web que el autor menciona (y el correo electrónico) ahora están muertos, pero es bueno saber esta información.
--jeroen
Gracias, esto ayuda. En realidad, el -um no es necesario en absoluto. Esto solo funciona: C: \ WINDOWS \ system32> tdump -e dbrtl100.bpl | grep GetTableNameFromSQLEx Archivo STDIN: 00026050 1385 04AC __fastcall Dbcommon :: GetTableNameFromSQLEx (const System :: WideString, Dbcommon :: IDENTIFIEROption) –
Creo que es una mejora reciente, entonces. Estoy bastante seguro de que Tdump no siempre ha hecho eso. –