|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Problema curioso con variables en Tasker
Estuve probando con variables y resulta que ahora cada variable (global) que cree y decida exportar x resultado a ella, Tasker automáticamente me crea una segunda variable con el mismo nombre base, pero agregando un número al final de ésta última.
Recuerdo que es me empezó a a pasar cuando intente tirar de: %xxxx(<), pues antes no me pasa. Por si no me habeis comprendido, desde ese momento hasta ahora mismo Tasker no para de crearme una segunda variable con el número asociado a ésta segunda, y en vez de volcar el contenido que quiero en la variable principal, me lo almacena en la segunda versión creada por Tasker mismo. De otro modo: 1. Creo acción para listar archivos, y establesco la variable de salida de datos llamada '%TestOut'. 2. Ejecuto la acción... 3. Compruebo el resultado almacenado, y resulta que en la sección de VARIABLES hay una nueva variable que YO NO HE CREADO llamada '%TestOut1', y en ésta es donde Tasker arrojó el resultado de la acción nº1. La variable original esta VACÍA! Última edición por SmartPhoneLover Día 01/11/16 a las 09:10:54. |
|
|
|
#2
|
||||
|
||||
|
Seguramente no has reparado en ello hasta ahora, pero esa es la forma de funcionar de un array.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#3
|
||||
|
||||
|
Si, lo sabía. Por eso he intentado con vaciarla usando: Variables > Array Clear, y pongo el nombre de %TestOut y en otra el de la variable %TestOut1. Pero sigue pasando lo mismo.
O quizás lo esté entendiendo y haciendo mal... ¿? |
|
#4
|
||||
|
||||
|
Un array puede ser creado automáticamente como consecuencia de algunas acciones, como por ejemplo la acción SEPARAR VARIABLE (o "dividir" variable). Quizá sea que estás utilizando alguna de estas acciones y por eso aparece una sub-variable del array. Si nos muestras la tarea seguramente podamos hacer un diagnóstico más preciso. Porsupuesto, siempre existe la posibilidad de que tu Tasker no esté funcionando bien, cosa que también podríamos intentar comprobar copiando esa tarea en otros dispositivos para ver si el problema desaparece.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#5
|
||||
|
||||
|
La cosa es que ya elimine las anteriores acciones que creo fue donde surgió el problema. Ahora solo me queda el inconveniente de que cada variable global que cree en Tasker, sea en el proyecto o sección (pestañas) que sea, siempre se me duplica la variable original y Tasker crea una segunda con el contenido que debería estar en la que YO he creado.
|
|
#6
|
||||
|
||||
|
Me parece que Array Clear elimina el contenido, no la variable.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#7
|
||||
|
||||
|
Me acabo de acordar que tengo habilitada la opción en Tasker de crear backups automáticos. Voy a ver si en alguno de esos archivos figura el cambio inicial a partir del cual surgió todo, y si logro encontrar la anterior a eso para ver si es posible restaurarlo.
|
|
#8
|
||||
|
||||
|
La cosa es que ya elimine las anteriores acciones que creo fue donde surgió el problema. Ahora solo me queda el inconveniente de que cada variable global que cree en Tasker, sea en el proyecto o sección (pestañas) que sea, siempre se me duplica la variable original y Tasker crea una segunda con el contenido que debería estar en la que YO he creado.
![]() Como parece que tú no estás por la labor, lo haré yo: A1: Establecer variable [ Nombre:%Alfa A:"bla bla bla" Calcular:Apagado Añadir:Apagado ] A2: Flash [ Texto:%Alfa1 Largo:Apagado ] El flash me muestra el texto "%Alfa1" como era de esperar porque esa variable %Alfa1 está vacía. O sea que yo no tengo el problema que has descrito (en tu primer post), o al menos no lo tengo con esta tarea de prueba. Si quieres, copia esta tarea en tu dispositivo y miras a ver si te funciona bien como a mí... o te funciona tal y como has descrito en tu primer post. Si no pones tareas concretas... creo que todo van a ser especulaciones e hipotésis con poca base real, y supongo que eso no es lo que quieres.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#9
|
||||
|
||||
|
No es que no quiera hacerlo, no había pensado devidamente en lo que me comentastes en el mensaje anterior, y entendí otra cosa. Aquí te dejo un ejemplo de lo que TÚ querías que te pusiese por escrito, además de unas imagenes:
Tarea de prueba: A1: Variable Set [ Name:%Alpha To:Hola Do Maths:Off Append:Off ] A2: Flash [ Text:%Alpha Long:Off ] A3: List Files [ Dir:/sdcard/Tasker/Archivos/TTS/audiotemp Match: Include Hidden Files:Off Use Root:Off Variable:%AlphaOut ] A4: Flash [ Text:%AlphaOut Long:Off ] Te preguntarás por qué he creado las acciones de tal modo que el primer grupo (A1 y A2) almacene un valor x en la variable 'Alpha', y el otro con similar función, pero almacenando el valor en la variable 'AlphaOut'. Bien, lo he hecho porque no sé si estoy delirando pero he notado que Tasker solo me hace eso de repetir las variables cuando utilizó la acción de listar archivos bajo un directorio (cualquier). En vez, cuando ejecuto SOLO las dos primeras acciones la variable queda correctamente llena y no se produce ninguna sub-variable de 'Alpha'. Empienzo a pensar que el problema esta con esa función de Lista Archivos, que da la casualidad que es con la que empezé a hacer esas pruebas hoy a la mañana cuando me empezó a suceder todo lo comentado hasta ahora. Aquí dejo unas capturas después de crear las acciones, y el contenido de sus variables posterior a su ejecuión:
|
|
#10
|
||||
|
||||
|
Tarea de prueba:
A1: Variable Set [ Name:%Alpha To:Hola Do Maths:Off Append:Off ] A2: Flash [ Text:%Alpha Long:Off ] A3: List Files [ Dir:/sdcard/Tasker/Archivos/TTS/audiotemp Match: Include Hidden Files:Off Use Root:Off Variable:%AlphaOut ] A4: Flash [ Text:%AlphaOut Long:Off ] ![]() ![]() En A3 usas "List Files" y estableces que la salida se guarde en la variable global %AlphaOut. Lo que hace esa acción es generar un array con un elemento por archivo, es decir %AlphaOut1 [o dicho de otro modo, %AlphaOut(1) que sería lo mismo] contiene el primer archivo del listado y así hasta el final. Esa acción no guarda nada en %AlphaOut, como puedes comprobar en el flash de A4 y en la imagen. Como te he comentado antes, ese es el comportamiento normal de un array en Tasker. ¿Dónde ves el "problema"?
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#11
|
||||
|
||||
|
Al final he decidido por reinstalar Tasker y borrar todo rastro de archivos asociados a él, y restauré todo a como antes. Pero el problema sigue ocurriendo.
Aunque ahora cabe decir que el problema ni está con tasker, ni con la vriable ni nada. Así es como funciona la función de listar archivos en tasker verdad? cada elemento que encuentra lo almacena en una array. Por lo que lo de la desinatalación y restauración ha sido tiempo perdido. |
|
#12
|
||||
|
||||
|
Ya te lo he contado esta mañana aquí... ![]() http://www.htcmania.com/showthread.php?t=1247843 La reinstalación no hacía falta, aunque nunca está de más hacer limpieza.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#13
|
||||
|
||||
|
Un array puede ser creado automáticamente como consecuencia de algunas acciones, como por ejemplo la acción SEPARAR VARIABLE (o "dividir" variable). Quizá sea que estás utilizando alguna de estas acciones y por eso aparece una sub-variable del array. Si nos muestras la tarea seguramente podamos hacer un diagnóstico más preciso.
![]() Es la ayuda de esa acción. Creo que con ésto hemos terminado de resolver el misterio.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#14
|
||||
|
||||
|
Si correcto Caravantes, el gran misterio queda resuelto. Bueno muchas gracias a los dos por la ayuda, y sorry por lo cabezón que puedo llegar a ser a veces
![]() Ahora ya comprendo un poco mejor como funcionan las variables y los arrays, y la relación entre ellas ;) Nota: estaba confundido y tenía metido en la cabeza la idea de que antes no me hacía eso Tasker, pero era porque usaba el comando shell (find /...) en vez de la opción nativa de Tasker de listar archivos. Ésta última es en la que no se me crean sub-variables por cada elemento (+ruta). |
|
#15
|
||||
|
||||
|
El tema es que Tasker no usa arrays propiamente dichos sino pseudoarrays, por eso lo mejor es usar con ellos siempre variables locales, nunca globales. Y para guardar resultados a nivel global hacer antes un join usando algún caracter "raro" como separador, de modo que todo quede en una única variable global. Luego para trabajar con ellos nada más empezar haces un split hacia un array local.
Y esto es con un solo nivel. Usando la misma técnica puedes almacenar varios niveles usando más de un separador en una única variable global. Así se obtiene más consistencia y evitas variables descontroladas que a lo mejor por usar para algo muy puntual has olvidado vaciar antes de terminar la tarea. |
| Los siguientes 2 usuarios han agradecido a danko9696 su comentario: | ||
![]() |
Estás aquí
|
||||||
|
||||||