En una oportunidad me respondiste a un problema que tengo con respecto a esto "hola " + chr( 0 ) + chr( 0 ) + "adios",
o sea, los chr( 0 ) con respecto a este mismo tema, Te mando un proyecto en el cual desde
Har se llama a una función que esta en C y desde esa funcion se llama a otra que esta en HAR,
la cual dicha funcion solo devuelve el contenido de una cadena.
Fijate, por favor, que cuando devuelve el contenido Return ( cRespuesta ) y
la toma nueavamente el C dicha cadena tiene solamente lo que esta antes del chr( 0 ),
lo que me indicaria que corta nuevamente la cadena, o por lo menos los restantes caracteres
no los estaria pasando.
Podrias indicarme como encarar el tema? porque la verdad necesito que se hagan esos pasos.
Llamadas desde Har a funciones de C que devuelven cadenas que contienen el
dichoso chr( 0 ).
Muchas Gracias.
Esto seria lo de har:
- Code: Select all Expand view RUN
#include "fivewin.ch"
//------------------------------------------------------------------------------
FUNCTION main( )
LLAMADAHAR("GUSTAVO")
RETURN ( NIL )
//------------------------------------------------------------------------------
FUNCTION FUNCION_HAR( cComando )
LOCAL cRespuesta:= "hola " + Chr( 0 ) + Chr( 0 ) + "Adios"
RETURN ( cRespuesta )
Esto seria lo de .c
- Code: Select all Expand view RUN
#include "winten.h"
#include "hbapi.h"
#include "windows.h"
#include "winten.h"
#include "hbapi.h"
#include "windows.h"
#include "hbvm.h"
#include "string.h"
#include "math.h"
HB_FUNC ( LLAMADAHAR ){
char *comando = hb_parcx(1);
char *respuesta;
hb_vmPushSymbol( hb_dynsymGet( "FUNCION_HAR") -> pSymbol );
hb_vmPushNil( );
hb_vmPushString( comando, strlen( comando ) );
hb_vmFunction( 1 );
respuesta = hb_parc( -1 );
MessageBox(0, respuesta, "Contenido que devuelve funcion HAR", MB_OK);
}