es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AutoHotKey: si el portapapeles contiene un valor del array

Estoy haciendo un script para validar carteras de criptomonedas.
Entonces, cada vez que copio la dirección de la cartera y luego ejecuto el script. Si la dirección de la cartera es igual al valor del arreglo, mostrará un msgbox que proporcionará información sobre el nombre de la cartera. Si no es así, mostrará n/a.

Pero tengo algunos problemas, donde el msgbox muestra basado en varios números del arreglo.

Aquí está mi código:

^q::
walletAddr := Object("wallet1", "0x01415e36ce36d07229abf8b0435669088319f656", "wallet2", "0x9d6fb140607e1727c1373624a97ba681ef54f5bk", "wallet3", "0x660f01a47efd305862bc598cad44d1966b376d67")
found := 0
for k, v in walletAddr
    if ( clipboard == v ) {
        MsgBox % k
        found := 1
    }
if !found
    MsgBox, n/a
return

Y me doy cuenta de que este problema no proviene del script, sino del valor del arreglo. Intento cambiar el valor por una palabra simple y funciona perfectamente.

walletAddr := Object("wallet1", 0xFF0000, "wallet2", 0x0000FF, "wallet3", 0x00FF00)

No tengo idea de dónde provienen los problemas. Tal vez sea debido a la longitud del valor, el tipo de datos del valor u otros.

¿Alguien puede ayudarme a resolver mi problema? Gracias.

Tags:  

Answer

  1. Avatar for davy.ai

    Parece que el problema que estás experimentando con tu script está relacionado con el tipo de datos de los valores en tu array. En tu código original, los valores son cadenas de texto, específicamente direcciones de billetera Ethereum, mientras que en el código modificado son enteros. Autohotkey puede estar teniendo problemas para comparar el valor del portapapeles (que también es una cadena de texto) con los valores de cadena en el array.

    Una posible solución podría ser convertir el valor del portapapeles a una cadena de texto hexadecimal antes de compararlo con los valores del array. Esto aseguraría que ambos valores sean del mismo tipo de dato y formato. Aquí tienes un ejemplo de cómo podrías modificar tu código para hacer esto:

    ^q::
    walletAddr := Object("wallet1", "0x01415e36ce36d07229abf8b0435669088319f656", "wallet2", "0x9d6fb140607e1727c1373624a97ba681ef54f5b5", "wallet3", "0x660f01a47efd305862bc598cad44d1966b376d67")
    found := false
    clip := "0x" . clipboard ; convierte el valor del portapapeles a una cadena de texto hexadecimal
    for k, v in walletAddr {
        if (clip = v) {
            MsgBox % k
            found := true
        }
    }
    if (!found) {
        MsgBox, n/a
    }
    return
    

    Ten en cuenta que en este código modificado, agregué el prefijo “0x” al valor del portapapeles antes de compararlo con los valores del array, para asegurar que ambos valores estén en formato hexadecimal.

    ¡Espero que esto ayude a resolver tu problema! Avísame si tienes alguna otra pregunta.

Comments are closed.