johan
15-11-2007, 01:15:03
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 [-] (http://www.clubdelphi.com/foros/#)
......
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 [-] (http://www.clubdelphi.com/foros/#)
CI_API int CI_CALL Pasar(char *pszMessg, int * piLen, char *pbMessgPending);
=========================================================
Programa C
Código Delphi [-] (http://www.clubdelphi.com/foros/#)
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.
Codigo Delphi
Código Delphi [-] (http://www.clubdelphi.com/foros/#)
......
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 [-] (http://www.clubdelphi.com/foros/#)
CI_API int CI_CALL Pasar(char *pszMessg, int * piLen, char *pbMessgPending);
=========================================================
Programa C
Código Delphi [-] (http://www.clubdelphi.com/foros/#)
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.