Escribí mi propio DBX 4 en Delphi 2010 para la base de datos Firebird. El controlador es un controlador de sincronización y funciona bien con TSQLConnection.Error de encuentro al utilizar DataExplorer.exe para conectarlo al controlador DBX4 de fabricación casera
Recientemente, trato de utilizar el DataExplorer.exe lanzado con Delphi 2010 y error encuentro:
"Attempted to read or write protected memory.
This is often an indication that other memory is corrupt".
Después traza el código fuente, me encontré con el siguiente método de exportación puede ser la causa del problema:
function DBXLoader_GetDriver(Count: TInt32; Names, Values: TWideStringArray;
ErrorMessage: TDBXWideStringBuilder; out pDriver: TDBXDriverHandle):
TDBXErrorCode; stdcall;
Al depurar este método, el parámetro de Nombres y valores contiene el valor dañado. No sé qué causa el problema. Tal vez hay algún problema con el administrador de memoria DataExplorer.exe (? Tema .net)
Después de algún ensayo y error, intento de cambiar el método de la siguiente manera:
type
TWideStringArray2 = array of PChar;
function DBXLoader_GetDriver(Count: TInt32; Names, Values: TWideStringArray2;
ErrorMessage: TDBXWideStringBuilder; out pDriver: TDBXDriverHandle):
TDBXErrorCode; stdcall;
Esta vez, el error es desaparecido y poco después de que salir de este método, elevar el mismo error de nuevo
"Attempted to read or write protected memory.
This is often an indication that other memory is corrupt".
¿tiene alguna idea de lo que podría el la causa del problema?
Esto es mucho menos probable que sea un problema de .NET per se, que un problema en DataExplorer o su propio código. – stephbu
Parte de la información en este [post] (http://stackoverflow.com/questions/5765424/how-to-access-databases-from-within-delphi-xe-professionalide) puede ser útil. –