AHK: Loop através de matriz associativa

0

Então, depois de uma pesquisa extensa na documentação do AHK, no stackexchange e no ahk_forum, decidi procurar ajuda dos especialistas

Vou explicar o código em que estou trabalhando e depois postar alguns exemplos.

Eu escrevi um script que extrai o valor de palavras não traduzidas e não-traduzidas de 6 arquivos de palavras diferentes e faz isso para 23 idiomas diferentes via WebTranslateIt (site). Consegui fazê-lo funcionar copiando o bloco de código e definindo a variável "fileid" para um dos 6 arquivos antes de cada nova consulta, no entanto, quando cheguei na parte da iteração de linguagem, rapidamente percebi que seria muito mais eficiente (e significativamente menos código) para simplesmente ter um loop dentro de um loop iterar através de dois arrays até o final do array.

Esse script acessa um site usando o Google Chrome e, em seguida, continua a injetar vários jQueries nas ferramentas do desenvolvedor e a extrair os resultados em variáveis de nome independente (que gostaria de atribuir como parte de um array associado).

Esta é a parte com a qual estou tendo problemas ... Posso percorrer uma matriz com êxito por meio de:

langid := ["bg", "cs", "da", "el", "eu", "fi", "hr" , "ja", "ko", "lt", "nb", 
"nl", "pl", "pt", "ro" , "ru", "sk", "sl", "sv", "th" , "tr", "zh", "zh-Hant"]

For Key, Value in langid
;   MsgBox, %A_Index% = %Value%    ; the MsgBox displays index values correctly but when putting my script in a loop start after the For Key part, it does not provide a value when sending the var inside a url. This works fine when I set the var manually before sending the URL.

Mas quando tentei executar isso logo antes de fazer o loop do script que faz a consulta principal, a variável 'langid' na URL que envio para alterar o idioma fica em branco.

Eu gostaria de fazer o loop do roteiro 23 vezes em todos os idiomas. Quando o script entra no loop, há uma parte que insere o URL da página com% langid% e não consigo fazer com que essa parte funcione com o código acima.

Além disso, eu também gostaria de atribuir mais valores a cada chave no índice da seguinte forma:

langid := ["bg", "cs", "da", "el", "eu", "fi", "hr" , "ja", "ko", "lt", "nb", 
"nl", "pl", "pt", "ro" , "ru", "sk", "sl", "sv", "th" , "tr", "zh", "zh-Hant"]

lang := ["Bulgarian", "Czech", "Danish", "Greek", "Basque", "Finnish", 
"Hungarian", "Japanese", "Korean", "Lithuanian", "Norwegian", "Dutch", 
"Polish", "Portuguese", "Romanian", "Russian"]

A matriz 'lang' deve referenciar a posição do índice em 'langid', como eu a uso como uma variável descritiva em algumas MsgBoxes que mostram o progresso da contagem de palavras e uma função no final que grava o resultado total dos 6 arquivos por língua. (Isso é puramente estético, mas eu adoraria fazer isso funcionar)

Eu também preciso de algo muito parecido com os wordfiles:

filenum := ["342553", "342582", "342411", "342367", "342467", "342502"]

wrdfile := ["OHFrontend", "OHFrontendListing", "HouseTypeAndSubType", "GuestType", "RoomTypeFeatureName", "RoomTypeFaturePrefixAndBracketOption"]

A matriz 'wrdfile' também é puramente estética, já que prefiro exibir o nome do arquivo e não o filenum nas confirmações de totais. O 'filenum', no entanto, é importante e precisa iterar através de cada valor no array uma vez até chegar ao final, ponto no qual ele precisa ser reiniciado, mas com o próximo idioma no array 'lang'.

Estou pensando que a estrutura a seguir funcionaria:

langid := [val1, val2, etc..]
lang := [val1, val2, etc..]
For Key, Value in langid     ; iterate through Languages
    Loop
    {
    filenum := [val1, val2, etc...]
    wrdfile := [val1, val2, etc...]
    Run Chrome
    Open Site
    For Key, Value in filenum    ;iterate through Wordfiles
        Loop
        {
        Send URL containing 'langid' var & 'filenum' var
        Open DevTools and send jQuery and store totals
        Confirm totals in MsgBox and save in txt file
        }
Return

Vale a pena notar que todas as linguagens precisam iterar através dos mesmos 6 arquivos de palavras, então talvez a matriz de arquivos também possa fazer parte da primeira matriz associativa em vez de duas diferentes ...? Não tenho certeza qual é a melhor abordagem aqui.

Por favor, ajude-me a encontrar a estrutura e a sintaxe corretas para os loops e, se possível, aponte-me na direção certa, até onde vão os arrays. (Eu sei que não estou associando-os corretamente)

Link para o AHK_Forum e o script completo.

Obrigado a todos!

    
por Andre 06.03.2018 / 12:39

0 respostas