Conversion a C

Post Reply
User avatar
Carles
Posts: 937
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Contact:

Conversion a C

Post by Carles »

Hola,

Haber quien me hecha un cable con esta conversion a C

Me gustaria hacer esto:

Code: Select all

FUNCTION Test( cData )

  Local nError := 0

   MiFuncionC( cData, @nError )

RETURN nError
Yo creo q seria algo asi, pero me falta definir nError y como paso el paramtro por referencia:

Code: Select all

#pragma BEGINDUMP 

#include "windows.h" 
#include "hbapi.h" 

LPWSTR AnsiToWide( LPSTR );

HB_FUNC  ( TEST )
{
    LPWSTR cData = AnsiToWide( hb_parc( 1 ) );

    MiFuncionC( cData, nError ???)      <- Como defino nError ( p.e. nError := 0, y lo paso por referencia )

   retnl( nError )

}
#pragma ENDDUMP
Gracias atodos.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
User avatar
jlcapel
Posts: 229
Joined: Wed Oct 12, 2005 5:32 pm
Location: Valencia - España
Contact:

Post by jlcapel »

Carles,

Quizás esto te pueda ayudar, aunque no estoy muy seguro.

http://www.capelblog.com/?p=75

Saludos,
José Luis Capel
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Carles,

Es bastante más simple si lo cambias así:

Code: Select all

FUNCTION Test( cData, nError ) 

   MiFuncionC( cData, @nError ) 

RETURN nError
te sirve ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Carles
Posts: 937
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Contact:

Post by Carles »

Antonio,

Si me serviria, pero como declaro la variable nError dentro de la funcion y como la paso por referencia ?

Code: Select all

#pragma BEGINDUMP 

#include "windows.h" 
#include "hbapi.h" 

LPWSTR AnsiToWide( LPSTR ); 

HB_FUNC  ( TEST ) 
{ 
    LPWSTR cData = AnsiToWide( hb_parc( 1 ) ); 
    nError = hb_parnl(2) ;               <- Como declaro nError (2º parametro) ?

    MiFuncionC( cData, &nError)      <- Como defino nError por referencia con el & ? 

} 
#pragma ENDDUMP 
Gracias
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Carles,

Code: Select all

#pragma BEGINDUMP 

#include "windows.h" 
#include "hbapi.h" 

LPWSTR AnsiToWide( LPSTR ); 

HB_FUNC  ( TEST ) 
{ 
    LPWSTR cData = AnsiToWide( hb_parc( 1 ) ); 
    LONG nError = hb_parnl(2) ;

    MiFuncionC( cData, &nError );
 
    hb_stornl( nError, 2 ); 
} 
#pragma ENDDUMP 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Carles
Posts: 937
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Contact:

Post by Carles »

Antonio,

Gracias. Casi lo consigo :-). Voy a probarlo
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
User avatar
Carles
Posts: 937
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Contact:

Post by Carles »

Antonio,

El ejemplo propuesto funciona de maravillas -> gracias.

Ahora necesito crear otro ejemplo, y necesito saber como se declaran las variables. No me gusta tocar las narices y si me dices donde puedo encontrar definiciones, me lo mirare. He intentado mirarme ficheros include, pero la verdad, no se si realmente miro lo correcto. Tambien, donde puedo mirar funciones que devuelven los valors, tipo hb_stornl(), hb_retnl(), ...

Ahora estoy enganchado en definir lo q en un prg seria:

cBuffer := Space(200)
lAccept := .f.


Gracias.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Carles,

> cBuffer := Space(200)

char buffer[ 200 ];

> lAccept := .f.

BOOL bAccept = FALSE;

Revisa el código fuente de Harbour. En el directorio RTL tienes muchos ejemplos.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply