Usar PRAGMA BEGINDUMP / ENDDUMP ?

Responder
Cristobal
Site Admin
Mensajes: 315
Registered for: 3 years 6 months
Spain

Usar PRAGMA BEGINDUMP / ENDDUMP ?

Mensaje por Cristobal »

Buenas noches, tomando algún ejemplo de los que propone Manu, pongo otra forma de incluir código C en nuestras aplicaciones que quizás no se conozca demasiado ( otra de las tantas "perlas" que nos esconde Harbour )

Código: Seleccionar todo


Function Main()

   local nYear   := 1900
   local lResult
   local nCubo := 0
   local cNum
   local getlist := {}

   cls
   @ 10, 10 SAY "Introduzca un año para saber si es bisiesto:" GET nYear PICTURE "@K 9999"
   @ 11, 10 SAY "Introdice un numero para calcular el cobo..:" GET nCubo  PICTURE "@K 9999"
   READ

   lResult := HB_INLINE( nYear ) {
      HB_UINT uiYear = hb_parni( 1 ); // Recupera un entero pasado a la función desde PRG en la pila de harbour
      HB_BOOL lRet   = HB_FALSE;

      if( uiYear > 0 ) // Si el año es mayo de 0 calculamos
       {
          lRet = ( ( uiYear % 4 == 0 && uiYear % 100 != 0 ) || ( uiYear % 400 == 0 ) );
       }
       hb_retl( lRet ); // Devuelve un valor logico por medio de la pila de harbour
    }

   if lResult
       Alert( "El año es bisiesto" )
   else
       Alert( "El año no es bisiesto" )
   endif

   cNum := hb_ntos( nCubo ) // El numero como cadena

   HB_INLINE( @nCubo ) {    // No devuelve nada sino que usa la misma variable para depositar el cubo
      HB_MAXINT iCubo = hb_parnint( 1 );
      iCubo = iCubo * iCubo * iCubo;
      hb_stornint( iCubo, 1 );
   }
   Alert( "El cubo de " + cNum + " es " + hb_ntos( nCubo ) )

   cNum  := 777
   HB_INLINE( @cNum ) {
      #include "hbapi.h"
      long iNum = HB_LONG( hb_parni( 1 ) ) ;
      hb_stornl( iNum, 1 );
      }
   Alert( hb_ntos( cNum ) )

return nil

Evidentemente si son funciones que necesitamos llamar varias veces en nuestra aplicación, lo lógico es crearlas dentro de los correspondientes #pragma ya que ahí podremos definirlas con un nombre e invocarlas cuando las necesitemos, pero bueno, en más de una ocasión he utilizado código C "inline" para salvar alguna situación muy concreta.
Saludos
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces

hmpaquito
Mensajes: 13
Registered for: 3 years 4 months
Spain

Mensaje por hmpaquito »

Muy bueno. Super integración. Gracias Cristóbal

ramirezosvaldo
Mensajes: 127
Registered for: 3 years 5 months
Mexico

Mensaje por ramirezosvaldo »

Te pongo un 10

Saludos

Responder