FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Access violation con una DLL de C
Voy avanzando con el tema de las llamadas a las DLL, pero me ecuentro con problemas a la hora de pasar los parametros a las funciones, alguien me puede ayudar.
Codigo Delphi Código Delphi [-] ...... Function pasar( var message_buf:char;var message_len:integer;var relleno:char): integer;stdcall;external 'libreria.dll'; [los parametros son in y de out a la vez]; </SPAN> ..... Procedure Tform1.enviar; var message_buf:array[0..2048] of char; var message_len : Integer; var relleno : char; begin message_buf :=FillChar(message_buf, SizeOf(message_buf), Ord('0')); message_len :=Sizeof(message_buf); relleno :='A'; nValor:=Pasar( pchar(message_buf),message_len,caracter ); <<<- access violation error ShowMessage( message_buf ); ShowMessage( IntToStr(message_len ) ); ShowMessage( relleno ); end; El punto c.h dice asi: Código Delphi [-] CI_API int CI_CALL Pasar(char *pszMessg, int * piLen, char *pbMessgPending); ========================================================= Programa C Código Delphi [-] long rc char message_buf[2048]; int message_len = 0; char relleno; message_len = sizeof(message_buf); result = Pasar( message_buf, &message_len, &relleno); If (result = 0 ) { message_buf[message_len]= '\0'; Printf( message_buf); Printf( message_len); Printf( relleno); } ========================================================= y otra cosa las las funciones que son de este tipo ver(void), ¿ que tipo de variable tengo que pasarles desde Delphi.? Siento el 'tocho' y gracias anticipadas. Juan. PD: Si conoceis algun enlace que explicara como indicar en delphi las variables, os lo agradeceria. |
#2
|
|||
|
|||
Yo empezaría desde lo más fácil e ir complicándolo, paso a paso
primero: Probar una rutina sin parámetros despues, probar una rutina con 1 parámetro sencillo (por ejemplo, integer) después, probar una rutina con varios parámetros después, probar una rutina con paso de punteros después, probar una rutina con devolución de valor Por cierto, void indica que no hay parámetros. C: void Rutina (void); Delphi : procedure Rutina (); |
#3
|
|||
|
|||
Prueba con punteros:
Y en la llamada
__________________
Saludos. |
#4
|
|||
|
|||
Muy Biennnn Basti, ha funcionado 1000%, jeje... no encuentro ningun icono para hacer la ola......
Muchas gracias, y también a mensana por su respuesta. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Access Violation con DLL | emeceuy | Varios | 8 | 17-08-2007 21:57:55 |
access violation | chona | Varios | 2 | 31-10-2006 01:36:04 |
access violation | chilenauta | Impresión | 15 | 15-12-2004 19:45:51 |
Access Violation ..... | MADV01 | Varios | 2 | 24-03-2004 16:01:33 |
Access violation | Giasl | Varios | 6 | 07-05-2003 12:35:51 |
|