Ver Mensaje Individual
  #1  
Antiguo 15-11-2007
johan johan is offline
Miembro
 
Registrado: may 2006
Posts: 38
Reputación: 0
johan Va por buen camino
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.
Responder Con Cita