You are on page 1of 15

Gua del principiante a Tasker.

Leccin 7: las matrices de


variables
701part-7-608x338.jpg
En la leccin 5 de esta gua (http://www.htcmania.com/
showthread.php?p=8821039) mencion brevemente las matrices.
En ese momento no era oportuno entrar en muchos detalles, pero
ahora es el momento de explorar a fondo estas variables de
Tasker.
Qu es una matriz?
Las matrices son comunes en muchas reas, desde las
matemticas a la programacin. En Tasker, una matriz puede ser
descrita como una variable de base que tiene varias variables
hijas. Cuando se utiliza Separar-variable sobre la variable
%Hola, obtienes un montn de variables hijo %Hola1, %Hola2,
%Hola3, etc. %Hola es entonces una matriz con varios
elementos, y cada elemento es una variable en s misma.
Hasta aqu nada nuevo, quizs con la excepcin de la
terminologa, porque ya hemos estado utilizando variables hijo a
lo largo de la gua. Cada elemento de una matriz es una variable,
por lo que puede ser utilizado como una variable independiente,
que es la forma en que hemos estado utilizando matrices
anteriormente. Pero lo que hace especial a las matrices son
algunas cosas que se pueden hacer nicamente con ellas, adems
de todo lo que se puede hacer con cualquier variable. Dado que
las variables de una matriz estn dispuestas en una forma que
pueden ser fcilmente referenciadas, ahora tenemos un nuevo
conjunto de herramientas que podemos utilizar para manipular las
variables a nivel de matriz, en lugar de tratarlas como simples
variables individuales.
Para utilizar matrices, hay que abandonar el concepto de variables
como entidades nicas. Cuando se hace referencia a una matriz,
es comn referirse a ella de dos formas: por su variable de base
(como %Hola) o en el formato %Hola(). El primer mtodo es
usado para configurar acciones especficas en Tasker, algunas de
las cuales veremos ms adelante. Por otro lado, %Hola() incluye
los contenidos de cada variable de la matriz, separados por una
coma.
Si tenemos la variable %ingredientes = azucar.leche.harina y
le aplicamos la accin Separar-variable usando el punto como
separador, obtenedremos una variable matriz %ingredientes que
contiene
%ingredientes1 = azucar
%ingredientes2 = leche
%ingredientes3 = harina
En este momento, usar una accin Flash para ver %ingredientes
nos mostrar azucar.leche.harina, con puntos intermedios como al
principio. Pero una accin Flash sobre %ingredientes()
mostrar el valor de cada variable hija, separndolas con una
coma, por lo que vers azcar,leche,harina. Si se borra la
variable %ingredientes y luego se repiten ambas acciones
Flash, se obtendra un %ingredientes vaco en la primera, y el
mismo resultado azcar,leche,harina en la segunda. Esto se
debe a que la matriz se mantiene a pesar de que se borre la
variable que se us para crear la matriz. Por el contrario, si se
borran las variables de la matriz %ingredientes, la primera
accin Flash no se vera afectada, mientras que la segunda solo
mostrara variables vacas.
Esto resulta confuso, porque %ingredientes puede hacer
referencia a la variable individual %ingredientes o a los
elementos de la matriz %ingredientes. Cuando manejamos
matrices, ste es el error ms comn: hacer referencia a uno
cuando te quieres referir a lo otro.
Haciendo referencia a las matrices
Dado que las matrices numeran listas de variables, esto permite
nuevas maneras para referirse a ellas. La lista de estas opciones
est disponible en la versin inglesa de la Gua de Usuario, en la
seccin Variable Arrays (http://tasker.dinglisch.net/
userguide_summary.html), y voy a citarlas aqu:
Si las cuatro variables %matriz1, %matriz2, %matriz3 y
%matriz4 contienen respectivamente a, b, c, d,entonces
tenemos una matriz con 4 elementos. Estas variables se pueden
utilizar como cualquier otra, pero tambin es posible acceder a
ellas de manera especial. Veamos algunos ejemplos:
%matriz(#)
El nmero de elementos de una matriz (4 en este caso).
%matriz(#>)
El ndice del primer elemento de una matriz definida, o 0 si la
matriz no est definida (1 en este caso).
%matriz(#<)
El ndice del ltimo elemento de una matriz definida, o 0 si la
matriz no est definida (4).
%matriz(#?b/c)
Una lista separada por comas de los ndices de matriz (de menor
a mayor) con valores coincidentes con los indicados, o 0 si no
coincide ninguno (2,3 en el ejemplo).
%matriz(>)
El contenido del primer elemento de la matriz (a).
%matriz(<)
El contenido del ltimo elemento de la matriz (d).
%matriz() o tambin %matriz(:)
Todos los elementos de la matriz separados por comas (a,b,c,d)
%matriz(2) o simplemente %matriz2
El contenido de elemento con el ndice 2 (b)
%matriz(2:4)
El contenido de los elementos con ndices 2 a 4 (b,c,d)
%matriz(:3)
Todos los elementos con ndices de hasta 3 (a,b,c)
%matriz(3:)
Todos los elementos con ndices a partir de 3 (c,d)
Un buen observador puede haber reconocido la primera de ellas,
%matriz(#). Esto se debe a que la usamos en un ejemplo en la
parte 5 de la gua , para contar el nmero de lneas en un archivo
de texto. Lo que realmente se hizo fue que se copi el contenido
de un archivo de texto a una matriz, haciendo que cada lnea
fuese un nuevo elemento de la matriz. El uso de (#) detrs de la
variable de base hace que Tasker cuente el nmero de elementos
en la matriz, que en aquel caso conicida con el nmero de lneas
del texto.
Por supuesto, Usted tambin reconoce aqu %matriz(), que es lo
mismo de que lo que acabamos de hablar anteriormente. Estos
mtodos antes mencionados nos muestran diferentes formas de
referirse a las matrices, lo que nos permite, por ejemplo,
referirnos al ltimo elemento de una matriz sin saber qu nmero
es.
Uno de los mtodos que falta aqu (porque no es exclusivo de las
matrices) es el formato %matriz(%variable). Asumiendo que
tiene una %variable con un valor numrico, puede hacer
referencia al elemento de matriz en ese punto de la matriz
mediante el uso de este formato.
Cmo se crean las matrices
En cuanto a la forma de generar las matrices, ya he citado la
accin Separar-variable. Voy a citar una vez ms la gua de
usuario oficial sobre esto, ya que lo tiene casi clavado:
1. Usando Separar-variable:
Establecer-variable %matriz a,b,c,d
Separar-variable%matriz ,
Si alguno de sus datos incluye una coma, se podra usar otro
separador menos frecuente como por ejemplo la arroba @,
recordando utilizar ese mismo carcter en la accin Separar-
variable.
2. Mediante la asignacin de elementos individuales con
Establecer-variable:
Establecer-variable, %matriz3 c
3. Con Array-push para agregar un elemento inicial.
4. Algunas otras acciones tambin crean matrices en sus
resultados, por ejemplo, Listar-archivos.
Separar-variable es quizs la forma ms comn de generar
matrices, aunque algunas otras acciones, como Listar-Archivos
recin mencionada, tambin permite crearlas. Aparte de eso,
tambin puede crearlas manualmente con Establecer-variable o
con Array-push.
Bucles For
En Tasker, las acciones For y End-For se encuentran juntas con Si
(If), Else y End-If. Al igual que Si(If)/End-If , For/End-For
crean un grupo de acciones fcilmente distinguible dentro de la
tarea. Inicialmente, esta accin For puede parecer confusa pero
pronto te das cuenta de su potencia. Se aplica sobre una variable,
con una lista de elementos o tems separados por comas. Todo el
conjunto de acciones del grupo se ejecutar una vez para cada
elemento de la lista, y en cada ejecucin la variable tendr el
valor de ese tem concreto. Por ejemplo:
For Variable: %itemaflash, Items: hola, mundo, cmo, ests?
Flash: %itemaflash
End-For
En este caso el grupo solo tiene una accin Flash que se
ejecutara una vez por cada elemento de la lista, en este caso 4
veces. Cada vez, la variable %itemaflash se actualizar con el
siguiente elemento de la lista, comenzando con un "hola",
terminando con "ests?". O sea que aparecen 4 mensajes flash,
cada uno con uno de los elementos de la lista.
La ventaja de este sistema es que se puede especificar un
conjunto de acciones y luego ejecutar un montn de valores a
travs de ellas sin necesidad de duplicar las acciones. Se necesita
algn tiempo para acostumbrarse con los detalles e implicaciones;
por ejemplo, si el grupo incluye alguna accin que grabe un
archivo conviene asegurarse de que el nombre del archivo sea
nico para cada tem.
Ejemplo: lista TODO V2
Nota del traductor: la expresin TODO se refiere a To-Do, que
viene a significar por-hacer, pendiente o simplemente lista-de-
tareas.
702scene.jpg
Recientemente decid rehacer mi sistema lista de tareas TODO
(que se describe en la parte tercera de esta gua ) para darle un
mejor rendimiento y ms caractersticas. Decid utilizar matrices
en su ncleo, y es bastante ms eficaz que el sistema anterior.
Tambin he aadido una nueva lista genrica TODO que no activa
ninguna alarma, adems de rehacer mis tres listas para
situaciones especficas. Voy a mostrar la lista genrica aqu ya
que las tres listas concretas aaden un poco de complejidad
adicional.
El primer sistema de lista TODO que haba creado utilizaba
mtodos que no eran ideales. La funcin de agregar a la lista fue
hecha guardando un archivo de texto, un archivo que se lea en
una sola variable y se mostraba en un campo de texto. La ventaja
de esto era que la lista se formateaba para su lectura en el
archivo de texto directamente, cada lnea est separada por un
cambio de lnea, y as no era necesario utilizar un divisor ms
especfico. El nico inconveniente era que la lista entera se
convirti en una sola entidad, lo que hace imposible algunas cosas
como seleccionar separadamente alguno de los elementos o
lneas.
La nueva lista se basa en matrices. La lista an se guarda en un
archivo de texto, pero el archivo de texto es ms una funcin de
copia de seguridad y ya no es el almacenamiento principal de los
elementos. Los elementos se almacenan en una matriz global, que
es directamente compatible con el archivo escribiendo %Array()
al archivo de texto (escribir el valor de cada elemento de la
matriz, separados por una coma), y leerlo de nuevo en un
variable que luego se divide por la coma (recuperando de nuevo
la forma de matriz).
De esta forma, la matriz puede ser utilizada como la fuente para
un elemento de men de escena. Adems, se pueden aadir
elementos fcilmente mediante la accin Men, que rellena
automticamente una escena con ese elemento. De esta forma, se
puede utilizar un elemento por s solo, y usando una matriz como
fuente, se crea una lista en la que cada elemento de la matriz se
convierte en un elemento de la lista. Los elementos de la lista
pueden ser seleccionados y/o utilizados individualmente, lo que
significa que ahora tenemos las herramientas necesarias para
hacer que esta lista TODO se parezca un poco ms a una
aplicacin bien afinada.
Tarea de activacin
703launchtask.jpg
La tarea de disparo es bastante sencilla. Se parece a esto:
Leer-archivo, Archivo:gentodo.txt a Variable:%Gentodo (lee
el archivo de texto de mi lista GENrica TODO en una
variable)
Separar-variable %Gentodo, Separador:,
Establecer-variable %Gtselectedd a 0 (restablece una
variable utilizada ms tarde. La doble D final no es un error
tipogrfico)
Array Pop %Gentodo, Posicin 1, si %Gentodo no coincide
con ++ (se elimina la primera entrada en la lista si est en
blanco. Francamente no recuerdo la circunstancia en la que
se necesitaba, pero estoy seguro de que tena un razn para
ello cuando lo hice)
Mostrar Escena Generic Todo
La escena: el elemento de men
El elemento de men es el corazn de la escena, ocupando la
mayor parte de ella. Aqu es donde se establece la fuente como
variable-matriz, y la variable es %Gentodo. Tenga en cuenta
que, dado que la fuente es una matriz, el campo de la variable
hace referencia a la variable de base de la matriz con el fin de
conocer tambin todos los detalles de la matriz. El modo de
seleccin se establece a mltiple, para que se puedan seleccionar
varios elementos.
704internalscene.jpg
Tenga en cuenta que los elementos del men de escena tienen
escenas internas. Por ejemplo, la opcin de formato de tem tiene
una escena sobre la que se puede hacer clic y editar. Esto
establece cmo se ve cada tem, y es pre-rellenada con un campo
de texto dinmico y un campo de icono dinmico. Esto se
rellenar con los datos de la fuente del elemento de men, pero
todava se puede utilizar esta opcin para elegir el aspecto que
tendr. Mi lista genrica TODO tiene una imagen esttica de una
chincheta ante el campo de texto, y termina parecindose a una
vieta cuando el elemento de men est totalmente relleno.
Aparte de tener una serie de elementos predeterminados, esta
escena interna es la misma que las escenas a las que estamos
acostumbrados.
705select.jpg
La pulsacin del tem activa una tarea que contiene lo siguiente:
Establecer-variable %Gtselected a %select_indices
Separar-variable %Gtselected, Separador:,
Establecer-variable %Gtselectedd a %Gtselected(#)
%Select_indices es una variable generada automticamente
(una de cuatro, las otras tres son %select_labels, %tap_label
y %tap_index) que Tasker establece cuando interactuamos con
el elemento de men de escena. Contiene una lista separada por
comas con los nmeros de los elementos seleccionados, a partir
de 0.
Nota del traductor: El artculo original aade al final (1) una
actualizacin en la que se explica que el inicio de este ndice est
cambiado a partir de Tasker 1.3.2: ya no comienza por 0 sino por
1. Por ese motivo, la frase siguiente y otras posteriores estn
caducadas, pues se escribieron antes de que Tasker corrigiese
este problema. Se muestran en color atenuado para resaltar que
estn obsoletas.
Por lo tanto, si seleccionamos los tems 1, 3, 5 en la lista,
%select_indices contendr 0,2,4.
%Gtselected(#) cuenta el nmero de elementos de la matriz
%Gtselected, que luego se ponen en %Gtselectedd. En
resumen, %Gtselectedd contiene el nmero de artculos
seleccionados.
As que, cuando has seleccionado algo en el elemento de men
escena, usted tiene una matriz con los nmeros de los artculos,
as como una variable con el nmero de elementos seleccionados.
Esto nos lleva a la funcin de eliminacin.
Advertencia: Actualmente hay un error por el cual
%select_indices no se actualiza al des-seleccionar el ltimo
elemento. No hay forma directa de resolver este problema. Por
ahora, hay que actualizar toda la escena para anular
correctamente el ltimo elemento.
Nota del traductor: La advertencia previa tambin ha quedado
desfasada a partir de Tasker 1.3.2, que tambin corrigi ese
problema (1).
La escena: el botn de eliminar
706delete.jpg
En mi escena, el botn (X) de eliminar tiene dos funciones:
cancela la escena, y elimina elementos. La primera funcin es
realizada por una pulsacin breve mediante la accin Destruir-
escena. Eliminar elementos es ms complicado, y se hace
manteniendo una pulsacin larga sobre el botn. En la pestaa de
la pulsacin larga, las acciones son las siguientes:
Si %Gtselectedd> 0
Men, Ttulo: Eliminar elementos %Gtselectedd, tem 1: S
(Establecer-variable Gtcd a 1), tem 2: No (*nada*)
Si %Gtcd coincide con 1
For Variable:%gendelete, tems:%Gtselected(
Sumar-a-variable, nombre: %gendelete, valor: 1
Restar-de-variable, Nombre: %gendelete, Valor: %shuffle,
si %shuffle no coincide con *shuffle*
Array Pop, Variable: %Gentodo, Posicin: %gendelete
Sumar-a-variable, nombre: %shuffle, valor: 1
End-For
Escribir-archivo, Archivo: gentodo.txt, Texto: %Gentodo()
End If
End If
Establecer-variable: %Gtcd a 0
Limpiar-variable: %shuffle
Establecer-variable: %Gtselectedd a 0
Como se puede ver, hay un puado de cosas anidadas aqu. El
primer Si(If) se asegura de que hay elementos seleccionados
antes de intentar ejecutar acciones para eliminarlos. Te habrs
dado cuenta de que hay una accin que reajusta %Gtselectedd,
pero no hay accin que limpie la variable %Gtselected. Esto
quiere decir que los ltimos valores de la matriz %Gtselected
persisten, porque en la tarea de borrado todo est anidado en un
bucle For %Gtselectedd (que se repone cada vez); as ya no
volveremos a tener una situacin en la que accidentalmente se
borren elementos que hubieran sido seleccionados en el pasado.
Adems de eso, se desactiva eficazmente la tarea asociada a la
pulsacin larga, si no hay nada seleccionado.
La accin Men que est como la primera accin en el grupo For
no debe confundirse con el elemento de men de escena que he
mencionado muchas veces. Esta accin Men genera un cuadro
emergente con una pregunta y respuestas de tipo estndar, en
este caso con S y No, creando un sencillo cuadro de dilogo de
confirmacin. Al hacer clic en S se establece una variable que es
condicin para la siguiente accin Si(If) del grupo. Esta variable
tambin se restablece al final de la tarea, por lo que siempre es 0
a menos que haga clic en S para confirmar la eliminacin.
A continuacin tenemos nuestro bucle For. Se ejecutan de forma
secuencial las cuatro acciones anidadas y eso se hace para cada
elemento de la matriz %Gtselected. En la configuracin de la
accin For , el campo de tems requiere una lista separada por
comas, y no necesariamente una matriz, por lo que la escribimos
con el formato %Gtselected(). Para cada elemento de la matriz
%Gtselected, el valor de dicho elemento se copiar en
%gendelete, que se utiliza en las siguientes cuatro acciones, y
luego contina con el siguiente elemento, poniendo su valor en
%gendelete, y as sucesivamente.
En cuanto a las cuatro acciones anidadas, la primera simplemente
resuelve un despiste cerebral del desarrollador. Ahora mismo, los
elementos de men comienzan en 0, mientras que los elementos
de matriz empiezan en 1. As, el valor de elemento de matriz 1 es
el mismo que el elemento de men 0. Este problema se
solucionar pronto de acuerdo con el desarrollador Tasker:
Se corregir para que sea el mismo que los ndices obviamente.
Esto va a causar problemas en las escenas de algunas personas,
pero es demasiado tonto para dejar as.
Mediante la adicin de 1 a %gendelete, que a su vez contiene el
nmero del elemento de men seleccionado, traemos ese nmero
hasta el nivel de la matriz, de manera que elemento de men 1 es
el mismo como elemento de la matriz 1.
Cuando los dos coinciden, se hace muy fcil quitar cosas de la
matriz, usando la tercera accin del bucle For. Basta con utilizar
Array-pop con %gendelete como posicin para que Tasker
saque de la matriz el elemento que ocupa esa posicin. Los otros
elementos superiores de la matriz son movidos hacia abajo de
modo que si se elimina el elemento tercero de una matriz que
tena cinco elementos, el nmero cuatro se convierte en el
nmero tres.
Espera, te has saltado una accin! S, en efecto. La segunda
accin en el bucle For, combinada con la cuarta, corrige un
problema inherente a este sistema. La primera vez que el bucle
se ejecuta, los nmeros de elementos de matriz coinciden con los
nmeros de elementos de men, una vez que se han aadido 1
para compensar la diferencia en la posicin inicial. Sin embargo,
debido a que todos los elementos de la matriz son empujados
hacia abajo cuando eliminamos un elemento, los nmeros no
coinciden despus de la eliminacin!
Digamos que tenemos 10 elementos en la lista/matriz, y
seleccionamos los nmeros 3 y 5. %Select_indices entonces
mostrar 3,5 (siempre en orden, no importa cul seleccione
primero). A continuacin, el bucle For comienza borrando el
elemento 3 de la matriz, lo que nos deja con 9 elementos, donde
el anterior nmero 5 es ahora el nmero 4. Si el bucle For
continuara normalmente, borrara el nmero 5, que era el nmero
6 cuando se seleccionaron los elementos.
Para solucionar este problema, aad 1 a %shuffle al final de
cada bucle. %shuffle representa el nmero de veces que la lista
se ha encogido. En el grupo de acciones, la accin segunda
Restar-de-variable resta este nmero del nmero del elemento
que va a eliminar, pero slo si %shuffle tiene realmente un valor
(la condicin Si(If) se encarga de verificarlo). Si borramos 5
elementos, entonces el nmero del elemento quinto tendr que
ser ajustado hacia abajo 4 veces para mantener la coincidencia.
Cuando se finaliza el bucle For, es el momento para escribir los
cambios en el archivo. A diferencia de la primera versin de la
lista de tareas, aqu se sobreescribe el archivo completo, porque
tenemos toda la informacin en la matriz y el archivo est des-
actualizado. Al escribir %Gentodo() al archivo, se escribe una
lista de elementos separados por comas. La prxima vez que se
abra la escena, leemos de nuevo el archivo a una variable, y
luego se divide en una matriz, separando por la coma.
En este punto terminamos los grupos de acciones y continuamos
con tres acciones que se ejecutan siempre, aunque slo sea para
dar garantas. Esencialmente se trata de limpiar las variables
%Gtcd, %shuffle, y %Gtselectedd, que quedan preparadas
para la prxima vez. Parecera que no es necesario limpiar
%shuffle ya que es una variable local, pero si se mantiene la
escena y hay que borrar algo en varios lotes, %shuffle seguira
contando con el ltimo valor y por eso conviene borrarla.
La escena: el indicador de tems
seleccionados
Hay un campo de texto en la parte inferior de la escena que
muestra "%Gtselectedd tems seleccionados". Es tan simple como
eso.
La escena: botn nuevo tem
707add.jpg
El botn para aadir un nuevo elemento no es muy complicado. La
tarea es la siguiente:
Consulta-de-variable Ttulo:Elemento nuevo, variable:
%gentoadd
Si %gentoadd no coincide con *gentoadd*
Array-push, nombre:%Gentoadd, Posicin 9001, Valor:
%gentoadd
Escribir-archivo, Archivo:gentodo.txt, Texto:%Gentodo()
End If
Esta tarea es simple. Se inicia mediante la accin Consulta-de-
variable para preguntar al usuario por el elemento a aadir. A
continuacin, chequea si realmente se introdujo algo en la
variable. Si es as, usa Array-push para aadirlo a la matriz. Al
especificar una posicin muy alta (superior a 9000), queda casi
garantizado que la matriz sea menor que eso, y en esos casos,
simplemente se aade en la posicin siguiente del ltimo
elemento que la matriz tuviera. Por lo tanto, si usted tiene una
matriz de 10 elementos y agrega un nuevo elemento, se
convertir realmente en el nmero 11, y no en el nmero 9001.
Despus de eso, se escribe la matriz en el fichero.
Un efecto secundario interesante de la utilizacin de matrices es
que cuando el contenido del archivo se lee en la variable, una
coma que hubiera dentro de alguno de los elementos recibir el
mismo tratamiento que una coma que separa los elementos de
matriz original. Esto le permite agregar varios elementos de una
sola vez escribiendo varios elementos separados por comas, con
el formato 1,2,3,4,5. Una vez aadido, se mostrar como un
elemento con varios nmeros separados por comas, pero cuando
la lista se actualiza (escena destruida, y relanzada) cada uno de
los elementos separados por una coma se convertir en un
elemento independiente. El inconveniente es que no se pueden
utilizar las comas dentro de un elemento de texto, pero creo que
compensa por la ventaja de poder aadir varios elementos de una
sola vez, en la misma escritura.
La escena: el botn actualizar
Alertas
Lo que he mostrado hasta ahora es mi nueva lista TODO genrica,
que es nueva (antes yo sola usar una app indpendiente con
widget). Pero tengo otras tres otras listas especficas (casa,
comprar, por la maana) que tambin utilizan este sistema de
matrices. El concepto bsico es el mismo, slo ligeramente
diferente para acomodar tres listas en la misma escena.
Las tres listas tienen diferentes alertas, por lo que tendra que
asumir los necesarios cambios, pero en realidad no hace falta.
Todas ellas trabajan mediante la lectura de los contenidos del
archivo, la comprobacin para ver si hay algo en el archivo, y
luego actuar basado en eso. Los productos estn separados por
una coma en lugar de cambio de lnea, pero eso no afecta a los
sistemas de alerta.
Integracin con AutoRemote
En todas estas listas de tareas ahora se pueden agregar
elementos de forma remota, desde AutoRemote . Este sistema
tuvo que ser cambiado cuando reconstru el sistema TODO. El
formato para la adicin es el mismo, es decir, "Todo
tag=:=nombre del elemento", slo con la adicin de una etiqueta
de lista genrica/universal. Al recibir un mensaje en este formato
se activa una tarea que tiene cuatro grupos de acciones idnticos
a excepcin de las variables y las identificaciones de archivos,
que estn adaptadas a cada lista. La condicin Si(If) de cada
grupo es la coincidencia con la etiqueta apropiada. Para la lista
universal, el grupo es el siguiente:
Si %arpar2 coincide con genrico/universal
Leer-archivo, Archivo:gentodo.txt a Var:%Gentodo (lee el
archivo de mi lista genrica TODO en una variable)
Separar-variable %Gentodo, Separador:,
Array-push, nombre:%Gentoadd, Posicin 9001, Valor:
%arcomm
Escribir-archivo, Archivo:gentodo.txt, Texto:%Gentodo()
End If
A estas alturas ya se sabe lo que hacen todas estas acciones,
porque ya han sido explicadas antes. La nica diferencia es que a
la matriz se aade %arcomm en lugar de %gentoadd. Como he
dicho, hay cuatro grupos de este tipo en la misma tarea, una para
cada uno de mis cuatro listas. Despus de los cuatro grupos Si
(If), al final la tarea aade una ltima accin que es la siguiente:
Decir "Producto aadido a la lista %arpar2"
Integracin AutoRemote Chrome
708chrome.jpg
Hasta ahora slo he utilizado el plugin AutoRemote de Chrome
para copiar texto desde el explorador a mi telfono . Pens que
sera ms fcil para agregar elementos a mi lista, as que he
aadido unas cuantas reglas para el plugin de Chrome. Cada regla
tiene un nombre que en realidad no importa, y un comando como
"Compras pendientes". Esto me permite seleccionar texto en
Chrome, hacer clic derecho en el ratn y enviarlo a mi tarea de
listas (que he indicado antes). Es una opcin muy til, que incluso
me permite ir a cualquier campo de bsqueda (como en
google.com), escribir algo, seleccionarlo y enviarlo a cualquiera
de mis listas.
http://www.youtube.com/watch?v=kM_YWA_tFUQ
(1) Actualizacin: Tasker beta 1.3.2b2 y
siguientes
Ha sido solucionado el problema de discrepancia numrica entre
las matrices y el men de escena, y tambin el problema de des-
seleccionar el ltimo elemento. Ambos se han resuelto en la
ltima versin beta de Tasker, lo que implica que la prxima
versin tambin incorporar esas correcciones. El cambio en la
lista TODO es que ya no hay que agregar 1 a %gendelete, y la
tarea de la solapa Tap en el elemento de men de escena debe
quedar as:
Si %select_indices no coincide *select*
Establecer-variable %Gtselected a %select_indices
Separar-variable %Gtselected, Separador:,
Establecer-variable %Gtselectedd a %Gtselected(#)
Else
Establecer-variable %Gtselectedd a 0
End If
En conclusin
Las matrices y bucles For permiten ahorrar mucho trabajo. Hay
algn problema con las matrices globales y los elementos de
men de escena, donde todo se ralentiza significativamente
debido a que las variables globales tienen que estar establecidas
todo el tiempo. Eso apenas importa en una pequea lista de
tareas, pero en un artculo posterior voy a mostrar cmo hacer un
explorador de archivos basado en Tasker, donde s que importa.
Originalmente haba hecho un navegador utilizando matrices y su
funcionamiento era demasiado lento, y despus de un poco de
ayuda de otro usuario de Tasker, result que las matrices eran
extremadamente ineficientes en esa situacin particular. Esto
podra ser un problema grave, pero ya sabemos varias formas de
acelerarlo. Aun as, la iteracin actual funciona muy bien, al
menos para mi uso.

You might also like