1 (изменено: Misamoto, 2014-05-29 12:20:40)

Тема: AHK: Сопоставление значений двух файлов

Изначальная задача: вставить в одно поле программы значение из одного списка, а в другое - из другого.

Так как программа непростая, то поместить все значения в один файл один за другим нельзя, перед тем как вставить значения нужны всякие действия (кликнуть кнопку "Добавить", удалить старое значение, жмакнуть мышкой в поле, в которое требуется ввод и тому подобные) Для краткости обзову их Sub#

Как мне видится решение:

Sub1
Вставить следующую строку первого файла
Sub2
Вставить следующую строку второго файла
Sub3

Но я не мог придумать как мне прочитать для, скажем, третьей строчки первого файла третью же второго.



SubPr
Loop, read, M:\AHKScripts\List.txt
    {
        Loop, parse, A_LoopReadLine, %A_Tab%
        {
        Sub1
        Send %A_LoopField%
        Loop, read, M:\AHKScripts\List2.txt
            {
            Loop, parse, A_LoopReadLine, %A_Tab%
                {
                Sub2
                Send %A_LoopField%
                }
            }
        }
    }

Вставляет мне все значения второго списка для каждого значения первого, это не то что мне надо.
Из того что я знаю о программировании мне вспоминается слово "Массив" и слово "Рекурсия", но как организовать это в AHK я пока не сообразил.
Или я вообще выбрал неверный путь для своей задачи? Тогда подскажите пожалуйста верный

2

Re: AHK: Сопоставление значений двух файлов

Есть же просто FileReadLine.


FileReadLine, OutputVar, M:\AHKScripts\List.txt, 3
Send %OutputVar%
FileReadLine, OutputVar, M:\AHKScripts\List2.txt, 3
Send %OutputVar%
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Сопоставление значений двух файлов

Ух ты.


Loop {
FileReadLine, OutputVar, M:\AHKScripts\List.txt, %A_Index%
Send %OutputVar%
}

Действительно выглядит симпатичнее чем то что использую я.
Спасибо. А как заставить его остановиться в конце файла?

4 (изменено: serzh82saratov, 2014-06-03 02:30:15)

Re: AHK: Сопоставление значений двух файлов

Ну так в справке ответ есть:

Loop
{
    FileReadLine, line, C:\My Documents\ContactList.txt, %A_Index%
    if ErrorLevel
        break
    MsgBox, 4, , Строка №%A_Index%: "%line%".  Продолжить?
    IfMsgBox, No
        return
}
MsgBox, Достигнут конец файла или возникла проблема чтения.
Return

Ну а для этого случая, наверное удобнее с массивами, так как разделение не только по переносу строки.


FileRead, Content1, *t M:\AHKScripts\List.txt
FileRead, Content2, *t M:\AHKScripts\List2.txt

oList1 := StrSplit(Content1, ["`n", A_Tab]) 
oList2 := StrSplit(Content2, ["`n", A_Tab]) 

Loop % oList1.MaxIndex()
{
    SendInput % oList1[A_Index]
    SendInput % oList2[A_Index]
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: Сопоставление значений двух файлов

А нет, так надо:


FileRead, Content1, *t C:\Users\sergey\Desktop\new  2.txt
FileRead, Content2, *t C:\Users\sergey\Desktop\new  3.txt

StringSplit, 1List, Content1, %A_Tab%`n
StringSplit, 2List, Content2, %A_Tab%`n
 
Loop % 1List0
{
    SendInput % 1List%A_Index%
    SendInput % 2List%A_Index%
}

StrSplit не поддерживает мульти разделитель.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: Сопоставление значений двух файлов

serzh82saratov пишет:

StrSplit не поддерживает мульти разделитель.

StrSplit() пишет:
For example: "," would divide the string based on every occurrence of a comma. Similarly, [A_Tab, A_Space] would create a new array element every time a space or tab is encountered in the input string.

7

Re: AHK: Сопоставление значений двух файлов

О, спасибо. А Я никак понять не мог, почему так.


oList1 := StrSplit(Content1, ["`n", A_Tab]) 
oList2 := StrSplit(Content2, ["`n", A_Tab]) 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui