Pase de parámetros en C
Pase de parámetros en C
Hola foreros.
Tengo un pequeño problema, a ver si alguien puede ayudarme. Estoy construyendo una función en Borland C++ a la que tengo que pasarle 8 parámetros, los cuatro primeros son obligatorios, y los cuatro últimos no. Con PCOUNT() puedo controlar cuantos parámetros está recibiendo la función, pero CUANTOS SEGUIDOS, creo, el problema es que a veces tengo que pasarle los cuatro primero y el _ o cuatro y el octavo o el séptimo y el octavo, y necesito saber qué parámetros se han pasado y cuales no, pues resulta que esos cuatro últimos parámetros son colores y tengo que poder distinguir entre 0 y NIL porque los valores intermedios vacíos pasan como 0 que respondería al color negro y no como NIL que sería de desear. Y no hay forma de organizar mejor los cuatro últimos, pues a veces hay que pasar unos y a veces otros.
Hay alguna manera de solucionar eso.
Gracias de antemano.
Tengo un pequeño problema, a ver si alguien puede ayudarme. Estoy construyendo una función en Borland C++ a la que tengo que pasarle 8 parámetros, los cuatro primeros son obligatorios, y los cuatro últimos no. Con PCOUNT() puedo controlar cuantos parámetros está recibiendo la función, pero CUANTOS SEGUIDOS, creo, el problema es que a veces tengo que pasarle los cuatro primero y el _ o cuatro y el octavo o el séptimo y el octavo, y necesito saber qué parámetros se han pasado y cuales no, pues resulta que esos cuatro últimos parámetros son colores y tengo que poder distinguir entre 0 y NIL porque los valores intermedios vacíos pasan como 0 que respondería al color negro y no como NIL que sería de desear. Y no hay forma de organizar mejor los cuatro últimos, pues a veces hay que pasar unos y a veces otros.
Hay alguna manera de solucionar eso.
Gracias de antemano.
Peaaaaaso de foro...
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Pase de parámetros en C
Antolin,
HB_ISNIL( n ) -> lSiNo
te dice si un determinado parámetro es NIL desde C
HB_ISNIL( n ) -> lSiNo
te dice si un determinado parámetro es NIL desde C
Re: Pase de parámetros en C
Ok Antonio, muchas gracias, voy a probarlo ahora mismo.
Peaaaaaso de foro...
Re: Pase de parámetros en C
Antonio, la expresión:
No me funciona, estoy utilizando xHarbour, será por eso? o lo estoy haciendo mal?
Gracias
Code: Select all
int nColor1 = IF( HB_ISNIL( 4 ), 255, hb_parni( 4 ) ) ;
Gracias
Peaaaaaso de foro...
Re: Pase de parámetros en C
Tampoco me funciona:
Va a ser por lo de Harbour/xHarbour pues me dice
Aunque me queda por buscar HB_ISNIL en alguna cabera diferente. Voy a ver...
Code: Select all
if ( HB_ISNIL(4) ) nColor1 = 255 ;
Code: Select all
Call to function 'HB_ISNIL' with no prototype in function
Peaaaaaso de foro...
Re: Pase de parámetros en C
Vale lo encontré en common.ch, aunque ahora me dice:
Intento solucionarlo y te cuento
Code: Select all
Warning W8017 C:\Xharbour\include\common.ch 57: Redefinition of 'TRUE' is not identical
Peaaaaaso de foro...
Re: Pase de parámetros en C
Vale lo encontré en common.ch, aunque ahora me dice:
Intento solucionarlo y te cuento
Code: Select all
Warning W8017 C:\Xharbour\include\common.ch 57: Redefinition of 'TRUE' is not identical
Peaaaaaso de foro...
Re: Pase de parámetros en C
Solucionado, prescindo de common.ch y utilizo directamente ISNIL( <nVar> ). Funciona!!
Ya sé algo nuevo.
Gracias
Ya sé algo nuevo.
Gracias
Peaaaaaso de foro...
Re: Pase de parámetros en C
Antolinantolin wrote:Solucionado, prescindo de common.ch y utilizo directamente ISNIL( <nVar> ). Funciona!!
Ya sé algo nuevo.
Gracias
Buen dia, puedes publicar el código?
Re: Pase de parámetros en C
Es muy fácil, si quiero controlar el parámetro número 7 pues escribo:
Y ya está.
Un saludo
Code: Select all
int nDifer = IF( ISNIL(7), 25, hb_parni( 7 ) ) ;
Un saludo
Peaaaaaso de foro...
Re: Pase de parámetros en C
Antolín...
No es por ná pero esto esta mu mal
Por lo que veo tu esperas un entero...
Si lemandas una cadena como septimo parametro nDifer lo igualara a NULL.
No sé si lo entiendes?
Tendrías que comprobar además del nil que el tipo sea correcto
Yo haría algo así:
o más reducido:
Espero que valga
No es por ná pero esto esta mu mal
Code: Select all
int nDifer = IF( ISNIL(7), 25, hb_parni( 7 ) ) ;
Si lemandas una cadena como septimo parametro nDifer lo igualara a NULL.
No sé si lo entiendes?
Tendrías que comprobar además del nil que el tipo sea correcto
Yo haría algo así:
Code: Select all
int nDifer;
if( hb_param( 7, HB_IT_NUMERIC ) != NULL )
{
nDifer = hb_parni( 7 );
}
else
{
nDifer = 25;
}
Code: Select all
int nDifer = hb_param( 7, HB_IT_NUMERIC ) ? hb_parni( 7 ), 25;
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía
Re: Pase de parámetros en C
Ok Manuel, copiado.
En este caso concreto, no me era necesario, pues siempre sé lo que voy a mandar a esa función, pero si es cierto que me viene mu bien pá otras funciones. Muchá grasia...
En este caso concreto, no me era necesario, pues siempre sé lo que voy a mandar a esa función, pero si es cierto que me viene mu bien pá otras funciones. Muchá grasia...
Peaaaaaso de foro...