Código
Action1 = ""; Action2 = ""; // Usada repetidamente por un objeto en el frame 1: function FuerzaBruta () { Mensaje = "Probando "+Action1+" y "+Action2; if (Action1<Action2) { trace("Action1<Action2"); // Solución; mostrar en pantalla y fin. Mensaje = "Se recomiendan las acciones "+Action1+" y "+Action2; gotoAndStop (2); } else if (Action1<"111") { Action1 = Action1+"1"; trace("Action1"); } else if (Action2<"111") { Action1 = ""; Action2 = Action2+"1"; trace("Action2"); } else { Mensaje = "No se pudo hallar una solución"; gotoAndStop (2); } } stop ();
Ni siquiera me muestra los traces, o sea nunca se cumplen estas condiciones:
if (Action1<Action2) {
} else if (Action1<"111") {
} else if (Action2<"111") {
Pero según GPT cuando una cadena se compara con otra se mira el valor ASCII o algo así de cada caracter, algo parecido a que se chequea qué cadena va 1ero en orden alfabético.
if (Action1<Action2) {
deberia cumplirse en el par "" y "1", o en el par "1" y "11", etc. Salvo que cuando no haya caracteres diga "no hay con qué comparar, false".
} else if (Action1<"111") {
Action1 empieza como "", y "" < "111", así que esta condición debería cumplirse.
En fin, intentaba hacer un código simple, sin usar lenght ¿es realmente necesario?
Citar
Operadores > < (menor que)
< (menor que)
Sintaxis
expresión1 < expresión2
Argumentos
expresión1, expresión2 Números o cadenas.
Descripción
Operador (de comparación); compara dos expresiones y determina si expresión1 es menor que expresión2 (true), o si expresión1 es mayor o igual que expresión2 (false). Las expresiones de cadena se evalúan y comparan basándose en el número de caracteres de la cadena.
Reproductor
Flash 4; Flash 5 o posterior. En Flash 5 < es un operador de comparación capaz de manejar varios tipos de datos. En Flash 4, < es un operador numérico. Los archivos de Flash 4 que se incorporen a un entorno de creación de Flash 5 sufren un proceso de conversión para mantener la integridad de los tipos de datos. El primer ejemplo a continuación muestra el proceso de conversión.
Ejemplo
A continuación se muestra un ejemplo de conversión de un archivo de Flash 4 que contenga una comparación de cualidad numérica.
Archivo de Flash 4:
x < y
Archivo de Flash 5 convertido:
Number(x) < Number(y)
El ejemplo siguiente muestra las devoluciones de true y false tanto para cadenas como para números:
3 < 10 or "Al" < "Jack" return true
10 < 3 or "Jack" < "Al" return false
< (menor que)
Sintaxis
expresión1 < expresión2
Argumentos
expresión1, expresión2 Números o cadenas.
Descripción
Operador (de comparación); compara dos expresiones y determina si expresión1 es menor que expresión2 (true), o si expresión1 es mayor o igual que expresión2 (false). Las expresiones de cadena se evalúan y comparan basándose en el número de caracteres de la cadena.
Reproductor
Flash 4; Flash 5 o posterior. En Flash 5 < es un operador de comparación capaz de manejar varios tipos de datos. En Flash 4, < es un operador numérico. Los archivos de Flash 4 que se incorporen a un entorno de creación de Flash 5 sufren un proceso de conversión para mantener la integridad de los tipos de datos. El primer ejemplo a continuación muestra el proceso de conversión.
Ejemplo
A continuación se muestra un ejemplo de conversión de un archivo de Flash 4 que contenga una comparación de cualidad numérica.
Archivo de Flash 4:
x < y
Archivo de Flash 5 convertido:
Number(x) < Number(y)
El ejemplo siguiente muestra las devoluciones de true y false tanto para cadenas como para números:
3 < 10 or "Al" < "Jack" return true
10 < 3 or "Jack" < "Al" return false
Hmp. Tampoco es como dijo GPT del código ASCII, es por la longitud de la cadena, no es necesario poner length ¿pero entonces qué pasa?
Se debería cumplir esto
} else if (Action1<"111") {
"" < "111"
¿por qué no se cumple?
Edit: El bot de acá tampoco acertó, dijo:
Citar
Ejemplo 1: "" < "1" → false
En ActionScript, una cadena vacía ("") no es menor que ninguna otra cadena en términos de comparación lexicográfica (basada en el orden de caracteres Unicode, no en longitud).
Pero acabo de poner que las variables Action inicien como "1" y al resetearse también, y el resultado es el mismo.En ActionScript, una cadena vacía ("") no es menor que ninguna otra cadena en términos de comparación lexicográfica (basada en el orden de caracteres Unicode, no en longitud).
"1" no es < "11"
Edit2: Más simple:
Código
No se cumple.
Action1 = "1"; Action2 = "1111"; if (Action1<Action2) { trace("jdbhbdhbdf"); }
Código
Se cumple.
Action1 = "1"; Action2 = "a"; if (Action1<Action2) { trace("jdbhbdhbdf"); }
Código
Se cumple.
Action1 = "1"; Action2 = "aaa"; if (Action1<Action2) { trace("jdbhbdhbdf"); }
O sea, lo que copié del manual parece que está equivocado ¿?
"Las expresiones de cadena se evalúan y comparan basándose en el número de caracteres de la cadena."
¿Quizá lo tradujeron mal del inglés?
Edit3: Creo que ya entendí al bot.
"1" < "11" no se cumple porque
"1" == "1"
"" nada "1" o sea se considera false según dijo.





Autor



En línea
