FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour GET con PICUTRE de 999999 y punto (.)
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
GET con PICUTRE de 999999 y punto (.)
Posted: Mon Sep 18, 2023 08:56 PM

Hola a todos,

Como debo especificar un PICTURE para un GET de una variable carácter (no numérica), que acepte sólo cifras y el punto (.)?

No doy con ello.

Muchas gracias,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: GET con PICUTRE de 999999 y punto (.)
Posted: Mon Sep 18, 2023 11:44 PM
Si el punto siempre tiene que estar en la misma posicion, es posible usar el PICTURE "99999.99" (Esto tambien te dejará poner espacios)

En caso que el punto pueda estar en cualquier lado, puedes validarlo con una expresión regular
Code (fw): Select all Collapse
....
@ 2, 2 GET oGet VAR cText OF oDlg VALID(Validar(cText))
...

STATIC FUNCTION Validar(c)
   LOCAL cRegEx := hb_regexComp("^[0-9]+([.][0-9]+)?$")   
   LOCAL aMatch

   aMatch = hb_regex( cRegEx, c )
   if Empty(aMatch) 
      MsgInfo('No válido')
   endif

return !Empty(aMatch)
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: GET con PICUTRE de 999999 y punto (.)
Posted: Tue Sep 19, 2023 11:35 AM
cmsoft wrote:Si el punto siempre tiene que estar en la misma posicion, es posible usar el PICTURE "99999.99" (Esto tambien te dejará poner espacios)

En caso que el punto pueda estar en cualquier lado, puedes validarlo con una expresión regular
Code (fw): Select all Collapse
....
@ 2, 2 GET oGet VAR cText OF oDlg VALID(Validar(cText))
...

STATIC FUNCTION Validar(c)
   LOCAL cRegEx := hb_regexComp("^[0-9]+([.][0-9]+)?$")   
   LOCAL aMatch

   aMatch = hb_regex( cRegEx, c )
   if Empty(aMatch) 
      MsgInfo('No válido')
   endif

return !Empty(aMatch)
De hecho estuve probando un método así utilizando VALID, pero pensé que podía existir un PICTURE para ello.
De momento lo resolveré así.
Gracias César,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: GET con PICUTRE de 999999 y punto (.)
Posted: Tue Sep 19, 2023 05:55 PM
Please try:
Code (fw): Select all Collapse
function GetDigits()

   local oDlg, oGet, cGet, cPic

   cGet  := Space( 8 )
   cPic  := "99999.99"

   DEFINE DIALOG oDlg SIZE 300,160 PIXEL TRUEPIXEL

   @ 40,40 GET oGet VAR cGet PICTURE cPic SIZE 100,20 PIXEL OF oDlg

   @ 80,40 BUTTON "OK" SIZE 60,40 PIXEL OF oDlg ACTION MsgInfo( cGet )

   ACTIVATE DIALOG oDlg CENTERED

   ? cGet
return nil
Regards



G. N. Rao.

Hyderabad, India
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: GET con PICUTRE de 999999 y punto (.)
Posted: Tue Sep 19, 2023 06:12 PM
nageswaragunupudi wrote:Please try:
Code (fw): Select all Collapse
function GetDigits()

   local oDlg, oGet, cGet, cPic

   cGet  := Space( 8 )
   cPic  := "99999.99"

   DEFINE DIALOG oDlg SIZE 300,160 PIXEL TRUEPIXEL

   @ 40,40 GET oGet VAR cGet PICTURE cPic SIZE 100,20 PIXEL OF oDlg

   @ 80,40 BUTTON "OK" SIZE 60,40 PIXEL OF oDlg ACTION MsgInfo( cGet )

   ACTIVATE DIALOG oDlg CENTERED

   ? cGet
return nil
Thanks Mr. Rao

But the dot is not allways at the same position.
:(

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: GET con PICUTRE de 999999 y punto (.)
Posted: Tue Sep 19, 2023 06:17 PM
Code (fw): Select all Collapse
   cPic  := "########"
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: GET con PICUTRE de 999999 y punto (.)
Posted: Tue Sep 19, 2023 06:34 PM
karinha wrote:
Code (fw): Select all Collapse
   cPic  := "########"
Regards, saludos.
Thanks Mr. João,

For me is ok, accept "0123456789.-+"

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Continue the discussion