FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour hb_parcx( -1 ) como funciona?
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
hb_parcx( -1 ) como funciona?
Posted: Mon Jul 17, 2006 01:35 PM
Amigos,

      hb_vmPushSymbol( hb_dynsymGet( "LEECONFIGURACION") -> pSymbol );
      hb_vmPushNil( );
      hb_vmPushString( comando, strlen( comando ) );
      hb_vmPushLogical( FALSE );
      hb_vmFunction( 2 );
      respuesta = hb_parcx( -1 );


Tengo ese código, y la función LEECONFIGURACION la cual es llamada, devuelve un dato de este tipo ( siempre con un chr( 0 ) como primer caracter ):

comando:= chr( 0 ) + "anulado + chr( 10 ) + chr( 9 )


El problema es que:
respuesta = hb_parcx( -1 );

No me devuelve el primer chr( 0 ), ya lo he verificado de diferentes maneras, escribiendoló en un .txt y viendo con un editor DOS, entre otras cosas.
Verifiqué que "antes de devolver comando en la funcion LEECONFIGURACION el chr( 0 ) exista, y si existe.

Alguna Idea?
Gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
hb_parcx( -1 ) como funciona?
Posted: Mon Jul 17, 2006 02:51 PM

Creo que esto esta mal:
hb_parcx( -1 ), sirve para recoger valores de harbour en C.
Para enviar valores de C a Harbour, usa:
hb_retc( -1 )

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
hb_parcx( -1 ) como funciona?
Posted: Mon Jul 17, 2006 04:38 PM

Rafa,

Gustavo está intentando recuperar el valor devuelto desde el PRG por lo que la llamada a hb_par...( -1 ) es correcta. -1 significa que se acceda al valor de retorno.

Gustavo: Tu problema es un problema de uso de cadenas en C. Si la cadena empieza con cero, entonces tienes que recuperar a partir del siguiente byte:

respuesta = hb_parcx( -1 ) + 1;

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
hb_parcx( -1 ) como funciona?
Posted: Mon Jul 17, 2006 05:18 PM

Estimado,

Entonces quiere decir que yo deberia luego agregarle el chr( 0 ) al inicio para que la cadena este bien?

Porque entiendo que me devuelve la cadena "pero" el el primer chr( 0 )

es asi?

Gracias.

FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
hb_parcx( -1 ) como funciona?
Posted: Mon Jul 17, 2006 09:23 PM

Gustavo,

En C, tradicionalmente, las cadenas se usan como un grupo de bytes terminados en un cero. De ahí que no debas ponerle un cero al principio, si deseas hacer otras operaciones como cadena.

Usa la cadena desde el siguiente byte, como te he indicado, y luego ten en cuenta que tienes un cero delante.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
hb_parcx( -1 ) como funciona?
Posted: Tue Jul 18, 2006 07:32 AM
Antonio Linares wrote:Rafa,

Gustavo está intentando recuperar el valor devuelto desde el PRG por lo que la llamada a hb_par...( -1 ) es correcta. -1 significa que se acceda al valor de retorno.

Gustavo: Tu problema es un problema de uso de cadenas en C. Si la cadena empieza con cero, entonces tienes que recuperar a partir del siguiente byte:

respuesta = hb_parcx( -1 ) + 1;


Correcto Antonio, no habia entendido bien el problema.
Creia que estaba intentando recuperar un valor pasado a la funcion,
no que deberia de cogerlo despues de llamar desde C a PRG y recuperar dicho valor en la mismo rutina de C.
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)

Continue the discussion