FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Conversion a C
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Conversion a C
Posted: Mon Sep 18, 2006 12:12 PM
Hola,

Haber quien me hecha un cable con esta conversion a C

Me gustaria hacer esto:

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:

#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..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 229
Joined: Wed Oct 12, 2005 05:32 PM
Conversion a C
Posted: Mon Sep 18, 2006 01:18 PM

Carles,

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

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

Saludos,
José Luis Capel

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Conversion a C
Posted: Mon Sep 18, 2006 04:48 PM
Carles,

Es bastante más simple si lo cambias así:
FUNCTION Test( cData, nError ) 

   MiFuncionC( cData, @nError ) 

RETURN nError

te sirve ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Conversion a C
Posted: Tue Sep 19, 2006 09:06 AM
Antonio,

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

#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..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Conversion a C
Posted: Tue Sep 19, 2006 10:02 AM
Carles,
#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
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Conversion a C
Posted: Tue Sep 19, 2006 10:06 AM

Antonio,

Gracias. Casi lo consigo :-). Voy a probarlo

Salutacions, saludos, regards

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

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Conversion a C
Posted: Tue Sep 19, 2006 12:40 PM

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..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Conversion a C
Posted: Tue Sep 19, 2006 06:33 PM

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

Continue the discussion