Помогите разобраться.
Требуется прочитать первую строку из тхт файла и вставить ее в форму. Затем прочитать вторую строку и вставить ее в другую форму. Затем третью и четвертую строку и так далее.

скрытый текст

Выделить код

Код:

VERSION BUILD=9030808
SET !ERRORIGNORE YES
SET !DATASOURCE C:\\iMacros\\Macros\\тест\\nt.txt
SET !DATASOURCE_LINE {{!LOOP2}}
SET !LOOP 1
URL GOTO=https://account.mail.ru/signup?from=navi&lang=ru_RU&siteid=169&rnd=3052698
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:signup ATTR=NAME:firstname CONTENT={{!COL1}}
SET !LOOP 2
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:signup ATTR=NAME:lastname CONTENT={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:signup ATTR=NAME:firstname CONTENT=
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:signup ATTR=NAME:lastname CONTENT=


любой код, публикуется в тегах code под спойлером
Получается так: первая и вторая строка считывается и вставляется, а затем третья строка вставляется в первую и вторую форму.


InfSub

barts пишет

VERSION BUILD=9030808

установите версию 8.9.7, являющуюся самой стабильной на данный момент и запретите обновление - дабы избежать большинства глюков данной версии

barts пишет

SET !ERRORIGNORE YES

удалите эту строку для отладки и обнаружения ошибок, например:

barts пишет

{{!LOOP2}}

такой переменной не может существовать в принципе

barts пишет

SET !LOOP 2

читайте что такое !LOOP  и как он работает, явно не так как вы пытаетесь его использовать

к сути вопроса: а собственно где в коде 3 и 4 строка, я вижу повторение 1 и 2

держи функцию, в цикле к ней обращаешься и по строчно выдергиваешь строки

скрытый текст

Выделить код

Код:

function ReadFile(zpar1,zpar2){
//par1 - номер строки которую надо считать
//par2 - полный путь до файла
if (zpar2 ==""){return false};
for(yq=1;yq<=50;yq++){
 iimPlayCode('SET !DATASOURCE '+zpar2+'\nSET !DATASOURCE_LINE '+yq+'\nSET !EXTRACT {{!COL1}}');
 var a=iimGetExtract();
 text=a.split('\n');
 if (yq==zpar1){return text};
 }
return;
}

Scorp1978
dash3.gif

Scorp1978

скрытый текст

Выделить код

Код:

alert(ReadFile(1,' ')); // не работает
alert(ReadFile(10,'c:\1.txt')); // опять не работает
alert(ReadFile('','c:\\1.txt')); // и так не работает
alert(ReadFile(10,'c:\\1 1.txt')); // и снова не работает
alert(ReadFile(100,'c:\\1.txt')); // и вновь что-то не так ... вот не задача-то

InfSub, :D:D:D да понял я, понял. Ну что было тем и помог. вот если бы кто подсказал универсальную функцию которая работала бы со всеми вариантами, сразу бы обновил у себя.

Scorp1978
что мешает исходя из приведенных мной примеров, исправить хотя бы банальные ошибки?

13-06-2018 15:26:50
тем более, половина примеров сделана только потому, что вы пытаетесь проверить входящие данные, вот только делаете это либо коряво, либо частично

13-06-2018 15:30:33
вот к примеру, мне нужна 51 строка, почему же она ни когда не будет получена из вашей функции? или это free-версия и работает она только с первыми 50 строками? и зачем мне перебор всех 50 строк перед этим? для того чтобы точно сказать, что 51 строка не найдена, даже если она есть?

13-06-2018 15:33:06
про то что csv может содержать, к примеру 2 и более столбцов данных, вы видимо тоже не слышали

13-06-2018 15:35:00

Scorp1978 пишет

вот если бы кто подсказал универсальную функцию которая работала бы со всеми вариантами, сразу бы обновил у себя.

читайте форум, уже давно приведен пример универсальной функции, не использующей имакрос для чтения данных из csv
да и на основе имакроса, при желании, можно написать более красивую функцию, нежели это

Как вариант

скрытый текст

Выделить код

Код:

var locPath = "C:\\test.txt";//Полный путь до файла

/********************************* описание функции *********************************/

var readFile = path => imns.FIO.readTextFile(imns.FIO.openNode(path)).match(/^.+/mg);

/********************************** вызов функции ***********************************/

var arr = readFile(locPath);//Вернёт массив всех не пустых строк из файла
window.console.log(arr);

var str_1 = readFile(locPath)[0];//Вернёт первую строку из файла
window.console.log(str_1);

var str_2 = readFile(locPath)[1];//Вернёт вторую строку из файла
window.console.log(str_2);

var str_3 = readFile(locPath)[2];//Вернёт третью строку из файла
window.console.log(str_3);

//и т.д.


Правда для себя так и не определился, хранить в переменной весь текст/массив или каждый раз обращаться к файлу. Делаю по-разному в зависимости от размера файла.