FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour No existe DEFAULT en Harbour
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
No existe DEFAULT en Harbour
Posted: Sat Jan 13, 2018 02: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 (fw): Select all Collapse
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 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: No existe DEFAULT en Harbour
Posted: Sat Jan 13, 2018 02:36 PM
Intenta asi
Code (fw): Select all Collapse
   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
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
Re: No existe DEFAULT en Harbour
Posted: Sat Jan 13, 2018 03: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. :-)

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 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: No existe DEFAULT en Harbour
Posted: Sat Jan 13, 2018 03:17 PM
Disculpa, Intenta asi
Code (fw): Select all Collapse
聽 聽hb_default( @lValor, .T. )


tambi茅n puedes usar algo habitual

Code (fw): Select all Collapse
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
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
Re: No existe DEFAULT en Harbour
Posted: Sat Jan 13, 2018 05:22 PM

Ahora si, perfecto Cristobal, ambas soluciones.

Repito gracias.

Saludos.

Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: No existe DEFAULT en Harbour
Posted: Sat Jan 13, 2018 06:21 PM
Siempre te puede servir If(...

Code (fw): Select all Collapse
lValor := If( lValor = Nil, .T., lValor )


Otra forma de hacer tuDefault
Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
Re: No existe DEFAULT en Harbour
Posted: Sat Jan 13, 2018 10:06 PM
Yo hice esta prueba
Code (fw): Select all Collapse
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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: No existe DEFAULT en Harbour
Posted: 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
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: No existe DEFAULT en Harbour
Posted: Tue Jan 16, 2018 09:31 AM
si que existe ...
en harbour/include/common.ch
Code (fw): Select all Collapse
#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 (fw): Select all Collapse
#xcommand DEFAULT <uVar1> := <uVal1> ;
聽 聽 聽 聽 聽 聽 聽 聽[, <uVarN> := <uValN> ] => ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 If <uVar1> == nil ; <uVar1> := <uVal1>;END ;
聽 聽 聽 聽 聽 聽 聽 聽 [聽; If <uVarN> == nil ; <uVarN> := <uValN>;END ]
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: No existe DEFAULT en Harbour
Posted: Tue Jan 16, 2018 11:01 AM
FWH proporciona DEFAULT en FiveWin.ch:

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

Antonio Linares
www.fivetechsoft.com
Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM
Re: No existe DEFAULT en Harbour
Posted: Tue Jan 16, 2018 01: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 (fw): Select all Collapse
If empty(lValue)
   lValue := .t.
Endif


Rick Lipkin
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: No existe DEFAULT en Harbour
Posted: Tue Jan 16, 2018 06:27 PM
Por defecto tanto clipper como harbour por si solo:
Code (fw): Select all Collapse
#include "common.ch"
DEFAULT cVar TO "carlos"


con fivewin:
Code (fw): Select all Collapse
#include "fivewin.ch"
DEFAULT cVar := "carlos"


salu2
carlos vargas
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: No existe DEFAULT en Harbour
Posted: Tue Jan 16, 2018 06:29 PM
Si, el tema es este ( no digo que sea el 煤nico con el que funcione )
Code (fw): Select all Collapse
#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

Continue the discussion