Ver la Versión Completa : [ CONSULTA ] Se puede poner dos variables distintas en un mismo "if" separados por comas?
Hola como estan todos está cuestión la tengo desde hace tiempo sin poder resolver, se pude poner a una acción un "if" dónde esten dos variables en un mismo nivel separadas por comas? similar a cuando uno pone que se ejecute si " Pactive coincide con... (dos perfiles distintos separados por comas)" en este caso lo que quería hacer qué tal acción se ejecute si "if" "variable" coincide con "%Noti 1"; %dormir 1" pero la variable global "Variable" no existe y tan poco se si las variables se pueden poner juntas separadas por comas
Caravantes
22/12/13, 01:17:38
Se puede poner dos variables distintas en un mismo "if" separados por comas?
Pues la mejor forma de averiguarlo es probando.
A1: Establecer variable %alfa a Antonio
A2: Establecer variable %beta a Beatriz
A3: Si(if) %alfa,%beta ~ Antonio,Beatriz
A4: Flash Eureka
A5: Fin si (Endif)
Veo que la palabra Eureka aparece, y de eso deduzco que la respuesta es SÍ, se pueden poner dos variables distintas en un mismo "if", separadas por comas.
Pero también funciona quitando las comas de ambos lados (%alfa%beta ~ AntonioBeatriz) y sospecho que funcionaría poniendo cualquier otra cosa en lugar de las comas (%alfaPinocho%beta ~ AntonioPinochoBeatriz).
He comprobado que eso también funciona como condición dentro de una acción:
A4: Flash Eureka Si(if) %alfa,%beta ~ Antonio,Beatriz
Supongo que también funcionará concatenando más de dos variables y que se pueden usar caracteres comodín como el asterisco (%alfa,%beta ~ *ntonio,Bea*).
Sin embargo no estoy seguro de que sea eso lo que querías preguntar, o tal vez no fuera lo único, porque tu explicación añade algunas frases que me resultan confusas.
Pues la mejor forma de averiguarlo es probando.
A1: Establecer variable %alfa a Antonio
A2: Establecer variable %beta a Beatriz
A3: Si(if) %alfa,%beta ~ Antonio,Beatriz
A4: Flash Eureka
A5: Fin si (Endif)
Veo que la palabra Eureka aparece, y de eso deduzco que la respuesta es SÍ, se pueden poner dos variables distintas en un mismo "if", separadas por comas.
Pero también funciona quitando las comas de ambos lados (%alfa%beta ~ AntonioBeatriz) y sospecho que funcionaría poniendo cualquier otra cosa en lugar de las comas (%alfaPinocho%beta ~ AntonioPinochoBeatriz).
He comprobado que eso también funciona como condición dentro de una acción:
A4: Flash Eureka Si(if) %alfa,%beta ~ Antonio,Beatriz
Supongo que también funcionará concatenando más de dos variables y que se pueden usar caracteres comodín como el asterisco (%alfa,%beta ~ *ntonio,Bea*).
Sin embargo no estoy seguro de que sea eso lo que querías preguntar, o tal vez no fuera lo único, porque tu explicación añade algunas frases que me resultan confusas.
Si era esoo, gracias Caravantes
No se porque no me funciona este momento "NotiAltavoces" coincide con 1 y la tarea si están la dos juntas sigue en rojo la única forma que logró que funcione es con una solo variable, acá les paso como lo puse. A19: Realizar tarea [ Nombre:Off QW WhatsApp Parar:Apagado Prioridad:5 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable: ] Si (if) [ %NotiAltavoces,%NotiGente ~ 1 ]
Caravantes
22/12/13, 03:13:48
Si (if) [ %NotiAltavoces,%NotiGente ~ 1 ]
Si tienes dos variables concatenadas, sus valores también deben chequearse concatenados. Pero en el lado de los valores (a la derecha) solo has puesto un dígito (un 1), y es imposible que el contenido de las DOS variables de la izquierda sea UN solo carácter. Además, puesto que en lado izquierdo has insertado una coma entre las dos variables, en el lado derecho debes de poner SIEMPRE una coma y debe de haber algo a la izquierda de la coma y también algo a la derecha de la coma. Si no lo haces de esta forma va a ser imposible que se cumpla la equivalencia.
¿Que crees que debe haber en la variable %NotiAltavoces? Pon un ejemplo o el valor que esperas en esa variable.
¿Que crees que debe haber en la variable %NotiGente? Pon un ejemplo o el valor que esperas en esa variable.
Si tienes dos variables concatenadas, sus valores también deben chequearse concatenados. Pero en el lado de los valores (a la derecha) solo has puesto un dígito (un 1), y es imposible que el contenido de las DOS variables de la izquierda sea UN solo carácter. Además, puesto que en lado izquierdo has insertado una coma entre las dos variables, en el lado derecho debes de poner SIEMPRE una coma y debe de haber algo a la izquierda de la coma y también algo a la derecha de la coma. Si no lo haces de esta forma va a ser imposible que se cumpla la equivalencia.
¿Que crees que debe haber en la variable %NotiAltavoces? Pon un ejemplo o el valor que esperas en esa variable.
¿Que crees que debe haber en la variable %NotiGente? Pon un ejemplo o el valor que esperas en esa variable.
Gracias ahí con 1,1 funciona pero lo que yo quería era que con solo una de las variables funcione, que tanto si esta %NotiAltavoces 1 y %NotiGente 0 funcione y al revés también (nunca están juntas) similar a los Pactive cuando pones dos perfiles y el nombre entre dos * * que cualquiera de los dos que este activado la activa y no tienen que estar necesariamente los dos juntos, el problema es que si pongo dos "if" no se ejecuta el segundo sin el primero y si lo pongo de esta forma necesito los dos juntos,
Caravantes
22/12/13, 13:26:47
lo que yo quería era que con solo una de las variables funcione, que tanto si esta %NotiAltavoces 1 y %NotiGente 0
Se usa una barra de dividir para separar diferentes alternativas que son válidas en la equivalencia. Así pues, prueba lo siguiente:
Si (if) [ %NotiAltavoces,%NotiGente ~ 1,1/1,0/0,1 ]
Caravantes
22/12/13, 13:33:57
el problema es que si pongo dos "if" no se ejecuta el segundo sin el primero y si lo pongo de esta forma necesito los dos juntos,
Hay otro método que ya te expliqué hace tiempo, usando una variable de control:
Establecer Variable %variabledecontrol a 0
Establecer Variable %variabledecontrol a 1 Si (if) %NotiAltavoces ~ 1
Establecer Variable %variabledecontrol a 1 Si (if) %NotiGente ~ 1
Si (if) %variabledecontrol ~ 1
... insertar aquí las acciones que deban ejecutarse cuando una de las dos variables (%NotiAltavoces o %NotiGente) esté activada con un uno.
Fin Si
En la práctica es preferible que a la variable de control le pongas otro nombre que sea más comprensible y que esté relacionado con la tarea.
Se usa una barra de dividir para separar diferentes alternativas que son válidas en la equivalencia. Así pues, prueba lo siguiente:
Si (if) [ %NotiAltavoces,%NotiGente ~ 1,1/1,0/0,1 ]
Con las barras solo funciona el primer valor (las dos variables juntas) así que opte por la variable de control, gracias por todo Caravantes.
Caravantes
22/12/13, 19:20:07
Con las barras solo funciona el primer valor (las dos variables juntas) así que opte por la variable de control
Creo que finalmente he entendido a lo que te referías con los asteriscos. Prueba lo siguiente:
Si (if) %NotiAltavoces%NotiGente ~ *1*
Debería funcionar y supongo que es indistinto que pongas la coma o la omitas entre los nombres de las variables.
Creo que finalmente he entendido a lo que te referías con los asteriscos. Prueba lo siguiente:
Si (if) %NotiAltavoces%NotiGente ~ *1*
Debería funcionar y supongo que es indistinto que pongas la coma o la omitas entre los nombres de las variables.
Ahora si funciona muchísimas graciasss, perdón si a veces no me explico bien avance un montón desde mi primer perfil de encender el wifi pero todavía me cuesta entender algunas cosas y explicarlas todavía más. Entonces al poner los asteriscos al *1* le estoy diciendo que use cualquiera de esas dos variables?
Caravantes
23/12/13, 17:23:57
Entonces al poner los asteriscos al *1* le estoy diciendo que use cualquiera de esas dos variables?
Fijate en los tres colores, que son parte de la explicación: Al poner *1* estás diciendo que concatenando las dos variables, su contenido conjunto tiene que tener un carácter 1 y que ese carácter puede estar precedido de cualquier cosa (o de nada) y que puede estar seguido de cualquier cosa (o de nada).
Por cierto, he probado la opción
Si (if) %NotiAltavoces,%NotiGente ~ 1,1/1,0/0,1
Decías que solo te funcionaba cuando las dos variables eran uno (1,1), pero a mí me funciona bien con cualquiera de las tres opciones (1,1 y 1,0 y 0,1); la única opción que no me funciona es 0,0 , como es lógico.
cierto, he probado la opción
Si (if) %NotiAltavoces,%NotiGente ~ 1,1/1,0/0,1
Decías que solo te funcionaba cuando las dos variables eran uno (1,1), pero a mí me funciona bien con cualquiera de las tres opciones (1,1 y 1,0 y 0,1); la única opción que no me funciona es 0,0 , como es lógico.
Ahí me di cuenta el error, el porque no funciona con las barras, cuando cambiaba de una variable a otra limpiaba la variable de la otra tarea no establecía que este en 0, asi que supongo que si pongo 1,1/1,*/*,1 debería funcionar
luigi__77
29/12/13, 02:12:24
hola X-D
estoy nuevo en el foro y estaba leyendo esto x aqui, en realidad no estoy buscando hacer nada que tenga que ver con dos variables (hasta ahora ) :D
pero pues estaba leyendo a ver si aprendia algo mas de als variables de tasker, y leyendo aqui sus comentarios me surgio una pregunta..
como hago si quiero usar dos variables pero con diferentes operadores?
osea, aqui jusss queria usar un condicional (if) compuesto de dos "condiciones"(valga la redundancia), claro, con poner tantos valores del lado izq como del lado derecha tenia no?, y bueno veo que inteligentemente carvante propuso lo de los '/' que hacen la funcion de un "o" (asi como en leyes logica "si se cumple esto O esto O esto...etc"), en fin, el echo esq ambas variables iban relacionada con un operador, osea tu variable1 y tu variable2 iban a ser comparadas por una IGUALDAD (que es el operador) a otros valores (unos(1) y ceros (0))
quedaba algo asi como si( (Variable1= 1)y ( variable2= 1) )..
pero mi duda es, puedo trabajar con las 2 variables en un mismo condicional usando distintos operadores?
ejemplo
si( (var1=1) y (var2>1), entonces, ("SUCESS_FULL")
aqui tengo el operador de "igualdad", y el otro operador es un "mayor que"
como haria para trabajar con operadores distintos(en un mismo condicional)? se puede hacer en tasker?
hola X-D
estoy nuevo en el foro y estaba leyendo esto x aqui, en realidad no estoy buscando hacer nada que tenga que ver con dos variables (hasta ahora ) :D
pero pues estaba leyendo a ver si aprendia algo mas de als variables de tasker, y leyendo aqui sus comentarios me surgio una pregunta..
como hago si quiero usar dos variables pero con diferentes operadores?
osea, aqui jusss queria usar un condicional (if) compuesto de dos "condiciones"(valga la redundancia), claro, con poner tantos valores del lado izq como del lado derecha tenia no?, y bueno veo que inteligentemente carvante propuso lo de los '/' que hacen la funcion de un "o" (asi como en leyes logica "si se cumple esto O esto O esto...etc"), en fin, el echo esq ambas variables iban relacionada con un operador, osea tu variable1 y tu variable2 iban a ser comparadas por una IGUALDAD (que es el operador) a otros valores (unos(1) y ceros (0))
quedaba algo asi como si( (Variable1= 1)y ( variable2= 1) )..
pero mi duda es, puedo trabajar con las 2 variables en un mismo condicional usando distintos operadores?
ejemplo
si( (var1=1) y (var2>1), entonces, ("SUCESS_FULL")
aqui tengo el operador de "igualdad", y el otro operador es un "mayor que"
como haria para trabajar con operadores distintos(en un mismo condicional)? se puede hacer en tasker?
Igual en ese caso podes poner tranquilo los dos independientes ya que el perfil se va a iniciar primero con la primera condición y después con la segunda, pero supongo que la pregunta es más por curiosidad y ahorrarte una línea de comando, y habría que probar no se Jaja perdón es la respuesta menos útil
Caravantes
29/12/13, 13:14:46
como haria para trabajar con operadores distintos(en un mismo condicional)? se puede hacer en tasker?
Creo que no se pueden usar operadores distintos en un mismo condicional, por escribirlo tal como tú lo dices. De hecho, en una acción solo puedes elegir un operador, y eso es lo que imposibilita totalmente mezclar varios operadores en la condición de una acción. Si necesitas usar varios operadores tendrás que utilizar necesariamente varias acciones. Y en tal caso tienes dos opciones básicas:
A - Usar varias acciones con condiciones anidadas. Ejemplo http://www.htcmania.com/showthread.php?p=11244211
B - Usar una variable de control para gestionar varias acciones con condiciones no anidadas. En este mismo hilo ya hemos visto un ejemplo, y hay otro en http://www.htcmania.com/showthread.php?p=11006994
Hay otros mecanismos para mezclar diferentes acciones con condiciones, pero creo que todos son más complicados y no ofrecen ninguna ventaja sobre estos dos que he expuesto.
stewartbatallas
02/01/14, 21:40:28
Cómo puedo poner una cantidad de batería? Es decir, un por ciento. Lo que quiero hacer es que se conecte si el nivel de batería es mayor que... Adjunto foto
Caravantes
02/01/14, 23:29:52
Cómo puedo poner una cantidad de batería? Es decir, un por ciento.
Ponlo tal como lo tienes, pero sin asteriscos, así:
Si %BATT > 30
La variable %BATT (nivel de batería) ya está convertida a puntos porcentuales, o sea que su valor está siempre entre cero y cien. Por lo tanto, puedes hacer una comparación matemática directa con cualquier cifra o cantidad que esté entre cero y cien. Al hacer comparaciones matemáticas no procede usar los asteriscos.
stewartbatallas
03/01/14, 12:44:48
Ponlo tal como lo tienes, pero sin asteriscos, así:
Si %BATT > 30
La variable %BATT (nivel de batería) ya está convertida a puntos porcentuales, o sea que su valor está siempre entre cero y cien. Por lo tanto, puedes hacer una comparación matemática directa con cualquier cifra o cantidad que esté entre cero y cien. Al hacer comparaciones matemáticas no procede usar los asteriscos.
Gracias por la ayuda,siento ser tan pesado pero tengo otra duda... Esto como lo pongo?
ruco1980
03/01/14, 17:59:41
Hola!! Intenta no sobrecargar los post con imágenes que ocupan mucho...lo mejor es que exportes la transcripción de los perfiles y tareas al mail o al portapapeles y los pegues en un post...
Creo que tu planteamiento es correcto, pero no te funciona porque la palabra correcta es "CONNECT", con doble N...creo que es eso...pero si no alguién más experto en seguida te dirá...
1 saludo!
stewartbatallas
05/01/14, 03:21:28
Hola... Siento coger este hilo para mis dudas pero lo veo mejor que abrir otro... Si os parece mejor que abra otro me avisáis. Aquí vengo con otra dudilla :
Saliendo De Casa (13)
A1: Red móvil [ Establecer:Encendido ] Si (if) [ %BATT > 30 ]
A2: Volumen del timbre [ Nivel:7 Mostrar:Apagado Sonido:Apagado ] Si (if) [ %TIME > 15 ]
A3: Volumen de notificación [ Nivel:7 Mostrar:Apagado Sonido:Apagado ] Si (if) [ %TIME > 15 ]
El caso es que el último paso me sale en rojo y no se porqué, el de arriba si esta en verde. Gracias de antemano.
darkopro
07/01/14, 22:11:00
Bueno he estado probando lo de la dos variables, en el perfil que tengo de despertar me dice cuanto tiempo he dormido.
%Digohoras me dice las horas
%Separador dice «y» o nada en caso de que los minutos o las horas sean 0
%Digominutos me dice los minutos
Entonces tengo una línea que dice:
establecer variable %Separador A: «_»
Si %Digohoras%Digominutos ~R 0
El caso es que sólo me funciona si pongo ~R, no me funciona ni con = ni con ~
La tarea me funciona pero no entiendo porque, porque funciona con ~R (coincide regex) y no con = (matem igual) ni con ~ (coincide). Teóricamente no debería funcionar con todos?
Caravantes
07/01/14, 23:51:07
porque funciona con ~R (coincide regex) y no con = (matem igual) ni con ~ (coincide). Teóricamente no debería funcionar con todos?
Creo que la comparación de tipo ~R es una equivalencia de tipo Expresion-Regular (REGEX = REGular EXpresion). Si quieres entender cómo funciona tienes que comenzar estudiando las expresiones regulares, puedes comenzar por la wikipeida o por este mensaje del compañero Maid450 http://www.htcmania.com/showthread.php?p=11752344
Lo que sí se puede ver claro es el motivo de que no te funcione con una equivalencia convencional ni con una igualdad. Supongamos que la variable %Digohoras contiene un 8 (ocho), y que la variable %Digominutos contiene un 0 (cero). En tal caso, la concatenación %Digohoras%Digominutos da como resultado 80 y en todo caso el resultado de la concatenación siempre serán dos dígitos o más (al menos un dígito por cada variable). Y entonces resulta evidente que la condición siguiente es falsa
Si %Digohoras%Digominutos ~ 0
Por otro lado, la concatenación de dos variables numéricas siempre dará una cifra de dos dígitos, al estilo de "80" o al estilo de "08". El caso es que la coincidencia matemática (igualdad) con el valor 0 (cero) solo se producirá si ambas variables contienen un cero cada una "00", pero eso es muy improbable porque entonces no habrías dormido nada. Esto explica que la condición siguiente también sea siempre falsa:
Si %Digohoras%Digominutos = 0
Yo te sugiero utilizar una multiplicación de ambas variables y el resultado lo comparas matemáticamente con cero, supongo que funcionará
Si %Digohoras*%Digominutos = 0
darkopro
08/01/14, 09:40:45
Creo que la comparación de tipo ~R es una equivalencia de tipo Expresion-Regular (REGEX = REGular EXpresion). Si quieres entender cómo funciona tienes que comenzar estudiando las expresiones regulares, puedes comenzar por la wikipeida o por este mensaje del compañero Maid450 http://www.htcmania.com/showthread.php?p=11752344
Lo que sí se puede ver claro es el motivo de que no te funcione con una equivalencia convencional ni con una igualdad. Supongamos que la variable %Digohoras contiene un 8 (ocho), y que la variable %Digominutos contiene un 0 (cero). En tal caso, la concatenación %Digohoras%Digominutos da como resultado 80 y en todo caso el resultado de la concatenación siempre serán dos dígitos o más (al menos un dígito por cada variable). Y entonces resulta evidente que la condición siguiente es falsa
Si %Digohoras%Digominutos ~ 0
Por otro lado, la concatenación de dos variables numéricas siempre dará una cifra de dos dígitos, al estilo de "80" o al estilo de "08". El caso es que la coincidencia matemática (igualdad) con el valor 0 (cero) solo se producirá si ambas variables contienen un cero cada una "00", pero eso es muy improbable porque entonces no habrías dormido nada. Esto explica que la condición siguiente también sea siempre falsa:
Si %Digohoras%Digominutos = 0
Yo te sugiero utilizar una multiplicación de ambas variables y el resultado lo comparas matemáticamente con cero, supongo que funcionará
Si %Digohoras*%Digominutos = 0
Que grande eres caravantes! De todas formas intente poner %Digohoras%Digominutos = *0* y no funcionó, no se porque. Pero lo de %Digohoras*%Digominutos es una grandísima idea, ya que al no saber bien porque me funcionaba con ~R , he hecho unas pruebas y la tarea no funcionaba bien ya que vendría a ser algo así como «si contiene» entonces si por ejemplo los minutos son 40 los procesa igual que si fueran 0.
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.