como puedo corregir este error que tengo en codigo?

Post Reply
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

como puedo corregir este error que tengo en codigo?

Post by goosfancito »

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.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
lubin
Posts: 404
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru
Contact:

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

Post by lubin »

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
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

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

Post by goosfancito »

Pero el empty(v) si son dos espacios, no lo tomaria como empty?
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
lubin
Posts: 404
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru
Contact:

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

Post by lubin »

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
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

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

Post by goosfancito »

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.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

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

Post by FranciscoA »

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

Fwxh1204-MySql-TMySql
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

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

Post by FiveWiDi »

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 19.06 + Harbour 3.2, BCC 7 Windows 10
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

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

Post by goosfancito »

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.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
nnicanor
Posts: 296
Joined: Fri Apr 23, 2010 4:30 am
Location: Colombia

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

Post by nnicanor »

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
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

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

Post by goosfancito »

gracias
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

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

Post by Carlos Mora »

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"
Post Reply