Problemas que informa el editor de Pasos
El editor de Pasos revisa sus pasos mientras los edita. Sus mensajes aparecen en cuatro lugares: debajo de un campo, como un chip en la fila de un paso, como No se guardaron los pasos: debajo de la lista, y en lugar de la lista cuando los pasos no se pueden mostrar como filas.
Debajo de un campo
Un campo con un problema recibe un borde rojo y el mensaje debajo, mientras escribe. Mientras un campo contiene texto escrito que no pasa su comprobación, los pasos no se guardan: No se guardaron los pasos: el paso N tiene un campo que no es válido aparece debajo de la lista, y la acción conserva sus últimos pasos guardados hasta que corrija el campo (No se guardaron los pasos).
Un campo vacío no muestra ningún mensaje y no impide guardar; los pasos se guardan con el campo vacío. Cuando la acción se ejecuta, un paso con un campo de número, de verdadero o falso o de ventana vacío detiene la acción ahí, y la salida Sistema de la consola indica que ese argumento tiene el tipo equivocado. Un campo Texto vacío se ejecuta como texto vacío, lo que para algunas funciones integradas (un nombre de archivo, un título de ventana que buscar) significa que el paso no hace nada.
| Mensaje | Causa | Solución |
|---|---|---|
| Este valor es obligatorio. | El nombre de la variable de un paso Asignar variable está vacío. | Escriba un nombre. |
| Escriba un número entero (decimal o hexadecimal 0x), una constante con nombre o una $variable. | Un campo de número entero, o un recuento de Veces, contiene otra cosa, como 2.5 o diez. | Escriba dígitos, con un signo menos opcional, 0x y un número hexadecimal, o una constante con nombre como VirtualKey.F5 (Parámetros de los pasos). |
| No existe ninguna constante con nombre con este nombre. Revise la ortografía y las mayúsculas, como en VirtualKey.MediaPlayPause. | Un campo de número entero o de número, o un recuento de Veces, contiene un nombre con un punto, como VirtualKey.Mediaplaypause, que no es una constante con nombre. | Corrija el nombre. Las mayúsculas cuentan. Los nombres aparecen en Constantes con nombre. |
| Escriba un número, o una $variable. | Un campo de número contiene algo que no es un número. | Use un punto como separador decimal, sin separador de miles: 1234.5. |
| Escriba true o false, o una $variable. | Un valor Verdadero o falso de un paso Asignar variable contiene otra cosa. | Escriba true o false. |
| Un paso no puede ejecutar una función integrada dentro de un argumento. Muévala primero a una variable. | El campo contiene una llamada a una función integrada con algo entre sus paréntesis, como WindowGetTitle($w). | Haga clic en Mover a una variable debajo del campo (Parámetros de los pasos). Si ese vínculo no se ofrece, agregue usted mismo un paso para la llamada, guarde su resultado y use la variable. |
| Use letras, dígitos y _, sin empezar con un dígito. | Un nombre de variable, en Guardar resultado como o Variable, tiene otro carácter o empieza con un dígito. | Cámbiele el nombre (Variables). |
| Este nombre está reservado. Elija otro. | El nombre de la variable es if, else, for, true o false. | Elija otro nombre. |
| Elija la función integrada cuyo resultado se comprueba. | Una condición en El resultado de una función integrada todavía no tiene función integrada. | Haga clic en Elegir una función integrada… y elija una. |
| "…" no se puede usar en una combinación de teclas. | El cuadro Teclas recibió una tecla que una combinación de teclas no puede nombrar, como una tecla multimedia. | Use otra tecla, o el paso Presionar y soltar tecla (KeyboardPressKey) (Teclas multimedia). |
Mover a una variable no se ofrece cuando la llamada no se puede leer (por ejemplo, cuando contiene
operadores como +), ni en la condición de un Repetir mientras o un Repetir hasta que.
Una nota no es un problema: Esto se guarda como texto, no se ejecuta. Para conservar el resultado de
una función integrada, use Guardar resultado como en el paso de esa función. debajo de un valor de
Asignar variable de tipo Texto que es una llamada a una función integrada con algo entre sus
paréntesis, como WindowGetTitle($w). El valor se guarda como esos caracteres. Una llamada con
paréntesis vacíos, como ClipboardGetText(), no recibe ninguna nota: es una lectura del menú de
valores (Variables).
En la fila de un paso
| Chip | Causa | Solución |
|---|---|---|
| No está dentro de una repetición | Un paso Salir del bucle está fuera de todas las repeticiones, normalmente después de moverlo. La acción no se puede ejecutar mientras esté ahí. | Vuelva a ponerlo dentro de una repetición, o quítelo (Repetir pasos). |
No se guardaron los pasos
No se guardaron los pasos: seguido de un motivo significa que el editor no pudo volver a escribir sus filas en la acción. Hasta que lo corrija, la acción conserva sus últimos pasos guardados, y el resto de sus ediciones espera.
| Motivo | Causa | Solución |
|---|---|---|
| una condición no tiene ninguna función integrada elegida | Un Si o un Repetir mientras/hasta que está en El resultado de una función integrada sin función integrada. | Elija la función integrada, o cambie Comprobar a otro tipo. |
| el value de una condición es una llamada (…); primero hay que asignarla a una variable | El Valor de una condición, o uno de los lados de una comparación, contiene una llamada a una función integrada con argumentos. | Agregue encima un paso que ejecute la llamada con Guardar resultado como, y use la variable en la condición. |
| el argumento N de Builtin es una llamada (…); primero hay que asignarla a una variable | Un campo de un paso contiene una llamada a una función integrada con argumentos. N cuenta los campos del paso desde 1. | Mover a una variable (Parámetros de los pasos). |
| el paso N tiene un campo que no es válido | Un campo del paso N contiene texto escrito que no pasa su comprobación (Debajo de un campo): abc en un campo de número entero o de número, un nombre que no es una constante con nombre, un campo de verdadero o falso con otro texto, un recuento de Veces que no es válido, o un nombre de variable que no está permitido. Un campo vacío nunca lo causa. N cuenta los pasos desde 1. | Corrija el campo bajo el que aparece el mensaje. |
Cuando los pasos no se pueden mostrar como lista
A veces los pasos existen como texto que la lista de pasos no puede mostrar: se editaron en la vista de código, se importaron o se escribieron a mano en el archivo de configuración. La lista se reemplaza entonces por:
Estos pasos usan control de flujo que no se puede mostrar como lista (motivo). Se pueden editar como código en el modo Avanzado.
Esto ocurre en todos los editores de Pasos: el de una acción, el de un snippet, el del Entorno de prueba, el de las acciones antes y después de un grupo de aplicaciones y el de un evento global.
Los pasos se siguen ejecutando tal como están; el editor solo no puede mostrarlos como filas. En el modo Avanzado, la vista de código muestra el texto, y es la única forma de editarlo (La vista de código). En cuanto el texto vuelve a tener forma de lista, las filas regresan. La forma de texto se describe en El motor Pasos.
El motivo es uno de los siguientes. Las palabras en cursiva representan la parte de su texto que cita el motivo.
El texto en su conjunto
| Motivo | Qué corregir en el texto |
|---|---|
| los pasos no son TOML válido: mensaje | El texto no es TOML válido. El mensaje indica dónde. |
| no hay ninguna matriz [[steps]] | El texto no tiene tablas [[steps]]. |
| la clave de nivel superior clave no es un valor simple | Una clave encima del primer [[steps]] contiene una tabla o una lista. Ahí solo puede haber valores simples. |
| un paso usa op op, que no tiene forma de lista | El op de un paso es uno que la lista no puede mostrar. |
| un paso usa la forma goto de if, que no tiene forma de lista | Un if salta con then_goto o else_goto, o existe un paso goto. Reescríbalo con un bloque if y end_if, o siga editando como texto. |
| un paso if no tiene condición | Un paso if no tiene condition. |
Un paso
| Motivo | Qué corregir en el texto |
|---|---|
| un paso call no tiene fn | Un paso call no nombra ninguna función integrada. |
| un paso set no tiene local | Un paso set no nombra ninguna variable. |
| el call de un paso set no tiene fn | El call de un paso set no nombra ninguna función integrada. |
| el value de un paso set no es un valor único | El value de un paso set es una lista, o una tabla que no es una lectura ({ fn = "Name" }) ni una constante con nombre ({ const = "Namespace.Name" }). |
| el value de un paso set es el texto texto, que la lista volvería a guardar como el resultado de ese builtin | El value de un paso set es un texto entre comillas que se lee como una lectura, como "ClipboardGetText()". Para guardar el resultado de la lectura, escríbalo como { fn = "ClipboardGetText" }; de lo contrario, cambie el texto. |
| un paso set no tiene value ni call | Un paso set no tiene nada que guardar. |
| un paso repeat necesita exactamente uno de times, while o until | Un paso repeat no tiene ninguno de ellos, o tiene más de uno. |
| el times de un paso repeat es un número, una constante con nombre o una llamada a un builtin guardados como texto, que la lista volvería a guardar como número, constante o resultado del builtin | times está escrito entre comillas, como "3", "MouseButton.Middle" o "MouseGetCursorX()". Escriba un número sin comillas, una constante como { const = "MouseButton.Middle" }, o una lectura como { fn = "MouseGetCursorX" }. |
| el times de un paso repeat no es un número entero ni texto | times es, por ejemplo, 2.5 o true. |
| una condición no es una tabla | Un condition, while o until no es una tabla. |
| una condición necesita exactamente uno de fn, value o compare | Una condición no tiene ninguno de ellos, o tiene más de uno. |
| el not de una condición no es true ni false | not contiene algo distinto de true o false. |
| el fn de una condición está vacío | El fn de una condición es un texto vacío. |
| el compare de una condición no es una comparación admitida | compare no es uno de ==, !=, <, <=, >, >=. |
| una comparación necesita left y right | A una comparación le falta left o right. |
| un operando de una condición no es un valor único | Un value, left o right es una lista, o una tabla que no es una lectura ni una constante con nombre. |
| una condición compara el texto texto, que la lista volvería a guardar como número, constante con nombre, true/false o resultado de un builtin | Un valor comparado está escrito entre comillas pero se lee como un número, una constante con nombre, true/false o una lectura, como "3", "MouseButton.Left" o "ClipboardGetText()". La lista no puede conservarlo como texto. Escriba una lectura como { fn = "ClipboardGetText" }, o cambie el texto. |
| args no es una matriz | El args de un paso no es una lista. |
| un argumento no es un valor único | Un argumento es una lista, o una tabla que no es una lectura ({ fn = "Name" }) ni una constante con nombre ({ const = "Namespace.Name" }). |
| un valor nombra la constante texto, que no existe | Un { const = "…" } contiene un nombre que no es una constante con nombre, o que no es texto. Corrija el nombre; las mayúsculas cuentan. |
Bloques que no coinciden
N es la posición del paso, contando desde 1.
| Motivo | Qué corregir en el texto |
|---|---|
| el paso N es un else fuera de un bloque if | Un else sin ningún if abierto antes. |
| el paso N es un segundo else en un mismo bloque if | Un bloque if tiene dos pasos else. |
| el paso N cierra un bloque que no está abierto | Un end_if o end_repeat sin un bloque abierto que le corresponda. |
| el paso N abre un bloque que nunca se cierra | Un if o repeat sin end_if o end_repeat. |
Avisos alrededor del editor
| Aviso | Significado |
|---|---|
| No hay nada configurado en este modo, así que ejecutarlo no hace nada. El contenido de modo se conserva, pero no se ejecuta. | Escrita como está en un modo vacío mientras otro modo tiene contenido. Haga clic en Usar modo para volver (Pasos, Script y AutoHotkey). |
| El soporte de AutoHotkey está desactivado en la configuración General, así que esta acción no hace nada hasta que se habilite. | La acción se ejecuta como AutoHotkey, que está desactivado (AutoHotkey). |
| Ningún complemento registrado proporciona el motor “motor”, así que este script se omite al ejecutarse. Agregue el complemento en la página Complementos o elija otro modo. | La acción se ejecuta en el motor de un complemento, y ese complemento no está registrado (Complementos). |