Page 1 of 1
Operador $ búsqueda de cadena
Posted: Sat Dec 05, 2020 3:54 am
by jparada
Hola,
Estoy obteniendo error de argumento $ en éste código
Code: Select all
procedure main
local cTemp := GetType()
? cTemp
if cTemp $ { "bar", "line", "horizontalBar" }
? 'ok...'
else
? 'NO ok...'
endif
return
function GetType
local cType := "bar"
return cType
Hacía ya tiempo que no utilizaba esto y estaba pensando que había cometido algún error, pero he revisado código "viejo" y en varios fuentes me he encontrado código mío o de algún compañero que hace exactamente ese tipo de validación, así que no sé por qué me está dando ese error.
Hay algún error que no estoy viendo? y en su caso alguna idea para hacer de otra manera lo que requiero.
Saludos,
Javier
Re: Operador $ búsqueda de cadena
Posted: Sat Dec 05, 2020 4:36 am
by jparada
Ascan es la solución, peroooo me queda la duda...
Saludos,
Javier
Re: Operador $ búsqueda de cadena
Posted: Sat Dec 05, 2020 7:19 am
by Claudio Ricardo
Hola...
El operador $ sólo funciona con cadenas de texto (strings)
En un array debes usar Ascan (aArray,cBusca,nInicia,nCuenta) que recorre el array buscando el parámetro
"cBusca" y nos devuelve la posición (numérico) si lo encuentra o cero si nó.
Pero en tu función puedes usar:
If cTemp == "bar" .OR. cTemp == "line" .OR. cTemp == "horizontalBar"
---> Encontrado
Else
---> No encontrado
EndIf
O si son muchos elementos mejor asi:
aArray := { "bar", "line", "horizontalBar" } // agregar más elementos al array si se necesitan
If Ascan ( aArray, cTemp) > 0
---> Encontrado
Else
---> No encontrado
EndIf
Re: Operador $ búsqueda de cadena
Posted: Sat Dec 05, 2020 8:07 am
by mol
A $ "ABC" // .T.
a $ "ABC" // .F.
Re: Operador $ búsqueda de cadena
Posted: Sat Dec 05, 2020 1:43 pm
by andyglezl
if cTemp $ { "bar", "line", "horizontalBar" }
? 'ok...'
else
? 'NO ok...'
endif
Code: Select all
if cTemp $ "bar,line,horizontalBar"
? 'ok...'
else
? 'NO ok...'
endif
Re: Operador $ búsqueda de cadena
Posted: Sat Dec 05, 2020 7:39 pm
by jparada
Hola,
Gracias a todos por su ayuda.
Saludos,
Javier
Re: Operador $ búsqueda de cadena
Posted: Sun Dec 06, 2020 12:33 am
by franco
You could also use,
if "bar" $ cTemp .or. "line" $ cTemp .or. "horizontalBar" $ cTemp
But Andres is less writing.
Re: Operador $ búsqueda de cadena
Posted: Sun Dec 06, 2020 9:39 am
by Claudio Ricardo
Hola...
Cuando se necesita encontrar un valor exacto y no una fracción de él se puede usar Hb_Ascan ()
Va programita ejemplo de los tres modos ( $ , Ascan () y Hb_Ascan () ) y cómo se comportan
ante diferentes valores de la variable " cTemp "