como puedo corregir este error que tengo en codigo?

como puedo corregir este error que tengo en codigo?

Postby goosfancito » Sat Dec 31, 2016 8:29 pm

Hola

tengo que inicializar un get con:
v:= space(2)
pero necesito analizar luego de que el usuario ingrese datos, que si ingresa un espacio
lo tome como valido.

if (alltrim(v)) == " " )
....


el problema es justamente ese, que si algo un alltrim(v) saca todos los espacios.
hay alguna otra forma de inicializar esa variable "v"?

gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: como puedo corregir este error que tengo en codigo?

Postby lubin » Sat Dec 31, 2016 9:00 pm

Holas

Quizas algo asi (.not. empty(v) .and. " " $ v ) ---->>> "que no este vacio y que un espacio esta contenido en v"

Saludos y FELIZ AÑO

Lubin
User avatar
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: como puedo corregir este error que tengo en codigo?

Postby goosfancito » Sat Dec 31, 2016 9:04 pm

Pero el empty(v) si son dos espacios, no lo tomaria como empty?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: como puedo corregir este error que tengo en codigo?

Postby lubin » Sun Jan 01, 2017 4:01 pm

Luego de fiesta....

que tal asi len(alltrim(v)) > 1 ---->>> "si quito los espacios y aun queda un carácter o mas ... es valido ??? "

Saludosss y reitero FELIZ 2017

Lubin
User avatar
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: como puedo corregir este error que tengo en codigo?

Postby goosfancito » Mon Jan 02, 2017 11:31 am

El Alltrim(x) para mi saca todos los espacios que existen en la cadena.
Si el valor que "tipie" en el get fue un espacio, a ese espacio tambien lo saca.
Es por ese mi problema.

gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: como puedo corregir este error que tengo en codigo?

Postby FranciscoA » Mon Jan 02, 2017 10:55 pm

Intenta asi:
if alltrim(substr(v,2,1)) == " "
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: como puedo corregir este error que tengo en codigo?

Postby FiveWiDi » Mon Jan 02, 2017 11:22 pm

Ahí va mi idea, a ver si sirve.

Cuando inicias tu DIALOG debes iniciar una variable, por ejemplo 'nEspacios := 0'

DESPUÉS de la definición del GET debes colocar esta 'instrucción':

oMyGet:bKeyDown = {|nKey, nFlags| IIF( nKey == VK_SPACE, nEspacios++, Nil ) }

Después en tu código (finalizado el DIALOG) puedes comprobar si la longitud del GET es superior a '0' (ó a '1' ó al valor que desees controlar) y si además 'nEspacios' vale '1'.
A partir de ahí lo que quieras.
No me he planteado como resolver si borra las teclas pulsadas antes de finalizar el DIALOG, pués 'nEspacios' podría tener un valor que no fuese cierto.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1181
Joined: Mon Oct 10, 2005 2:38 pm

Re: como puedo corregir este error que tengo en codigo?

Postby goosfancito » Tue Jan 03, 2017 12:59 am

PAra mi es un tema que deberian de tomarlo en cuenta para las proximas salidas
del xharbour o harbour.

porque pasan varias cosas cuando tenes que inicializar las variables, entre ellas esto:

una variable inicializada con un valor queda definida por el tamaño de la misma y no por la que uno
desea. Ej:
v:= space(30)
v:= "hola"

en el primer caso el maxlen es 30, en el segundo es 4. deberia de poder definirse el maxlen
y cuando se le pase un valor que no lo cambie, esto ocurre (me) cuando tengo que leer un dato
desde una DB, si el codigo existe, a "V" le paso el valor de la DB y ahi queda definida el maxlen y
deberia de poder decirle que el maxlen es 30 no el tamaño del dato.

las variables deberian (con respecto a los get) de poder inicializarse y que esos valores no sean espacios


Solo sugerencias.
gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: como puedo corregir este error que tengo en codigo?

Postby nnicanor » Tue Jan 03, 2017 1:46 am

v:=padr("hola",30)

? Len( v ) // Resultado 30
? Len( alltrim(v) ) // Resultado 4


Slds,
Nicanor Martinez M.
Auditoria y Sistemas Ltda.
MicroExpress Ltda.
FW + FWH + XHARBOUR + HARBOUR + PELLES C + XDEVSTUDIO + XEDIT + BCC + VC_X86 + VCC_X64 + MINGW + R&R Reports + FastReport + Tdolphin + ADO + MYSQL + MARIADB + ORACLE
nnicanor@yahoo.com
nnicanor
 
Posts: 302
Joined: Fri Apr 23, 2010 4:30 am
Location: Colombia

Re: como puedo corregir este error que tengo en codigo?

Postby goosfancito » Tue Jan 03, 2017 9:16 am

gracias
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: como puedo corregir este error que tengo en codigo?

Postby Carlos Mora » Tue Jan 03, 2017 11:42 am

Hay una cuestión de definición. No hay un espacio predefinido y otro mecanizado, los dos son Chr(32)
Si Chr(32) es válido, rellená la variable con otro caracter no válido.
En consola el Chr(255) no es visible, por lo que yo tomaría como valor inicial

v:= Replicate( Chr(255), 4 ) // Donde 4 es el largo que tiene que tener el get.
@get ...... PICTURE '@K XXXX' // El @K borra la variable si el usuario teclea algo, quedando en

valid v != Replicate( Chr(255), 4 )

mientras el usuario no tipea nada, la variable será igual a Replicate( Chr(255), 4 ), en cuanto teclee algo, incluyendo un espacio, ya se volverá lo digitado, estirado hasta la longitud, que en el ejemplo es 4.

Creo que con esto te funcionaría.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 76 guests