![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
Gracias, "chackAll" por la respuesta. Desgraciadamente me sigue dando el mismo error (EAccessViolation); ¿cuál es la segunda posibilidad?
![]() Gracias de nuevo por tu respuesta. |
|
#2
|
||||
|
||||
|
Vaya, en ves de string; declara ShortString o PChar en la librería y en el proyecto que lo llama (en el proyecto original)...
Cita:
Si ésto no dá aconsejo subas parte del cógido (mínimo funcional) para corregirlo. |
|
#3
|
|||
|
|||
|
Gracias de nuevo, CheckAll. No creo que sea un problema de tipos (string, pchar).
He depurado paso a paso el código y he inspecionado las variables. El error (EAccessViolation) se produce en "FreeLibrary" procedure TForm1.SpeedButton1Click(Sender: TObject); type TLlamarDLL = function(var s : string; x : integer; si : boolean): boolean; var buffer : string; DLL : HWND; LlamarDLL : TLlamarDLL; begin buffer := ''; DLL := LoadLibrary('monlib.dll'); try @LlamarDLL := GetProcAddress(DLL, 'buscarValor'); if @LlamarDLL <> nil then if llamarDLL(buffer, 30, false) then edit1.text := buffer; finally FreeLibrary(DLL); end; end; |
|
#4
|
|||
|
|||
|
Prueba cambiando el tipo de la variable DLL.
DLL : HWND; -----> DLL : THandle; Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
|
#5
|
|||
|
|||
|
Gracias de nuevo. Lo he hecho de las dos formas (THandle / HWND); ahora he estado probando con la directiva "stdcall" y sin ella, pero sigue dándome error.
|
|
#6
|
||||
|
||||
|
¿Hiciste lo que te comentó cHackAll respecto del tipo de datos string? No es opcional. Si usas strings sin recurrir a BORLNDMM.DLL, la dll va a fallar sí o sí. Además, aunque no aseguro que sea la causa, un string no es sino un apuntador cuya memoria se maneja dinámicamente, y como tal, no sería de extrañar que los errores sólo se manifiesten al intentar liberar recursos, como lo hace FreeLibrary.
// Saludos |
|
#7
|
|||
|
|||
|
¡Gracias a los dos! ¡Tenéis razón! He cambiado STRING por PCHAR y no se produce el error al liberar la librería (FreeLibrary).
![]() ![]() ![]() |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Error Abstract Error y Access violation | zvf | OOP | 33 | 08-09-2010 18:50:33 |
| 'DBX Error: No Mapping for Error Code Found' | CHECHE81 | Conexión con bases de datos | 1 | 09-06-2010 02:11:35 |
| Error 10093 al ver un informe - Que error es este? | URBANO | Impresión | 1 | 03-02-2006 18:44:39 |
| ¿Por qué me da este error?Error creating cursor manejador | nuri | SQL | 2 | 01-08-2005 17:30:28 |
| Error: RichEdit line insertation error | DarkByte | Varios | 3 | 19-07-2004 12:28:09 |
|