No existe DEFAULT en Harbour

No existe DEFAULT en Harbour

Postby jvtecheto » Sat Jan 13, 2018 2:24 pm

Hola amigos:

Perdon por no ser un tema de Fivewin, pero ...

No existe DEFAULT en Harbour.?

aquello que se hacia en Clipper en los parametros de las funciones.
Code: Select all  Expand view


FUNCTION CualquierCosa(nCantidad,lValor)

DEFAULT lValor := .T. // No existe en Harbour.

// Codigo....

RETURN nCantidad
 


Como se asignaria ese valor por defecto , caso que no se especifique.?

Repito perdon por no ser de Fivewin.

Saludos y Enhorabuena a este grupo tan numeroso y colaborativo, no cambieis.
Fwh 19.06 32 bits + Harbour 3.2dev(r2104281802) + Borland 7.4 + FivEdit
User avatar
jvtecheto
 
Posts: 576
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: No existe DEFAULT en Harbour

Postby cnavarro » Sat Jan 13, 2018 2:36 pm

Intenta asi
Code: Select all  Expand view

   hb_default( lValor, .T. )
 
Cristobal Navarro
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
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: No existe DEFAULT en Harbour

Postby jvtecheto » Sat Jan 13, 2018 3:08 pm

Gracias por tu interes Cristobal.

No tengo error de compilacion, pero no funciona bien, sino especifico el valor por defecto en la funcion, el programa se queda esperando sin hacer nada.

El codigo es este, es una funcion de conversion de pesetas a Euros y viceversa que realice en su dia en clipper. Y ahora como estoy mirando de volver a
Xbase con Harbour, jaja, ya he visto a mas de uno y me han dado envidia. :D
FUNCTION Ptas2Eur(nCantidad,lEuro) // Si .T. Ptas -> Euro, .F. Euro->Ptas

Local nEntero,nDecimal
Local c2Decimales,c3Decimal

// DEFAULT lEuro:=.T. error en Harbour
hb_default( lEuro, .T. )
// De Ptas. a Euros
IF lEuro
nEntero:=INT(nCantidad / EURO) // parte entera
nDecimal:=( (nCantidad / EURO)-nEntero ) * 1000
c2Decimales:=SUBSTR(STR(nDecimal,3),1,2)
c3Decimal:=SUBSTR(STR(nDecimal,3),3,1) // cogemos el 3er decimal
IF VAL(c3Decimal) >= 5 // sumar 0,01
nDecimal:=(VAL(c2Decimales))/100 + 1/100
ELSE
nDecimal:=VAL(c2Decimales)/100
ENDIF
nCantidad:=nEntero+nDecimal
ELSE
nCantidad:=ROUND((nCantidad * EURO),0)
ENDIF

RETURN (nCantidad)



Ya se que habran funciones mucho mejor estructurdas y rapidas :) , pero me gustaba hacermelo a mi a mi manera.
Os puedo asegurar que funcionaba bien.

Saludos.
Fwh 19.06 32 bits + Harbour 3.2dev(r2104281802) + Borland 7.4 + FivEdit
User avatar
jvtecheto
 
Posts: 576
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: No existe DEFAULT en Harbour

Postby cnavarro » Sat Jan 13, 2018 3:17 pm

Disculpa, Intenta asi
Code: Select all  Expand view

   hb_default( @lValor, .T. )
 


también puedes usar algo habitual

Code: Select all  Expand view

if hb_IsNil( lValor )
   lValor := .T.
endif
 
Cristobal Navarro
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
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: No existe DEFAULT en Harbour

Postby jvtecheto » Sat Jan 13, 2018 5:22 pm

Ahora si, perfecto Cristobal, ambas soluciones.

Repito gracias.

Saludos.
Fwh 19.06 32 bits + Harbour 3.2dev(r2104281802) + Borland 7.4 + FivEdit
User avatar
jvtecheto
 
Posts: 576
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: No existe DEFAULT en Harbour

Postby Xevi » Sat Jan 13, 2018 6:21 pm

Siempre te puede servir If(...

Code: Select all  Expand view

lValor := If( lValor = Nil, .T., lValor )
 


Otra forma de hacer tuDefault
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: No existe DEFAULT en Harbour

Postby surGom » Sat Jan 13, 2018 10:06 pm

Yo hice esta prueba
Code: Select all  Expand view
static prueba
//etc te

 MENUITEM "Ocasionales..."       ACTION  prueba() ;

///ETC

 static function prueba()
 
 default nprueba := 100

 MsgStop(nprueba)
 return nil


y muestra 100

Con Harbour3.2

Me intrigo porque tengo varios sistemas con harbour y utilizo el DEfault en varias ocasiones.
Ahora que estoy escribiendo no tendrás que compilar xhb.lib?

Luis
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: No existe DEFAULT en Harbour

Postby cnavarro » Sat Jan 13, 2018 10:47 pm

Luis, yo también creo que si
Cristobal Navarro
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
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: No existe DEFAULT en Harbour

Postby mastintin » Tue Jan 16, 2018 9:31 am

si que existe ...
en harbour/include/common.ch
Code: Select all  Expand view


#xcommand DEFAULT <v1> TO <x1> [, <vn> TO <xn> ] => ;
                                IF <v1> == NIL ; <v1> := <x1> ; END ;
                                [; IF <vn> == NIL ; <vn> := <xn> ; END ]

 


si quieres que funcione con la igualdad , incluye en el archivo :
Code: Select all  Expand view


#xcommand DEFAULT <uVar1> := <uVal1> ;
               [, <uVarN> := <uValN> ] => ;
                  If <uVar1> == nil ; <uVar1> := <uVal1>;END ;
                [ ; If <uVarN> == nil ; <uVarN> := <uValN>;END ]

 
Last edited by mastintin on Tue Jan 16, 2018 11:15 am, edited 1 time in total.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: No existe DEFAULT en Harbour

Postby Antonio Linares » Tue Jan 16, 2018 11:01 am

FWH proporciona DEFAULT en FiveWin.ch:

Code: Select all  Expand view

#xcommand DEFAULT <uVar1> := <uVal1> ;
               [, <uVarN> := <uValN> ] => ;
                  If( <uVar1> == nil, <uVar1> := <uVal1>, ) ;;
                [ If( <uVarN> == nil, <uVarN> := <uValN>, ); ]
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: No existe DEFAULT en Harbour

Postby Rick Lipkin » Tue Jan 16, 2018 1:48 pm

This is how I look for passed values that may be null .. that goes also for Sql values that may be nil as well ..

Code: Select all  Expand view

If empty(lValue)
   lValue := .t.
Endif
 


Rick Lipkin
User avatar
Rick Lipkin
 
Posts: 2606
Joined: Fri Oct 07, 2005 1:50 pm
Location: Columbia, South Carolina USA

Re: No existe DEFAULT en Harbour

Postby carlos vargas » Tue Jan 16, 2018 6:27 pm

Por defecto tanto clipper como harbour por si solo:
Code: Select all  Expand view

#include "common.ch"
DEFAULT cVar TO "carlos"
 


con fivewin:
Code: Select all  Expand view

#include "fivewin.ch"
DEFAULT cVar := "carlos"
 


salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1680
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: No existe DEFAULT en Harbour

Postby cnavarro » Tue Jan 16, 2018 6:29 pm

Si, el tema es este ( no digo que sea el único con el que funcione )
Code: Select all  Expand view

#include "common.ch"
 
Cristobal Navarro
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
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 14 guests