Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.
Группа Вконтакте | Электронная почта | Симаков Яков ВК |
Возвращает строки текстового файла, по одной строке (работает быстрее, чем FileReadLine).
Read | Этот параметр должен задаваться как слово READ. |
InputFile | Имя файла, чьё содержимое будет читаться циклом. Если абсолютный путь не задан, файл ищется в папке, указанной в переменной A_WorkingDir. Поддерживаются форматы Windows и Unix, т.е. строки файла могут оканчиваться как возвратом каретки с переводом строки (`r`n), так и одним переводом строки (`n). |
OutputFile | (Необязателен). Имя файла, который нужно держать открытым, пока работает цикл. Если абсолютный путь не задан, считается, что файл находится в папке, указанной в переменной A_WorkingDir. В теле цикла используйте команду FileAppend только с одним параметром (текст, который нужно записать), чтобы запись шла в этот файл. Добавление текста в файл таким способом происходит быстрее, чем когда FileAppend используется в режиме с двумя параметрами, так как файл не нужно закрывать и снова открывать при каждой операции. Не забывайте ставить после текста перевод строки (`n), если это желательно. Этот файл не открывается, если в него ничего не пишется. Это случается, если цикл не выполняется ни разу или если он ни разу не использует команду FileAppend. Двоичный режим: чтобы текст добавлялся в файл в двоичном, а не в текстовом режиме, поставьте звёздочку перед именем файла. Это приведёт к тому, что каждый символ перевода строки (`n) будет записан как одиночный перевод строки (LF), а не как стандартное для Windows сочетание возврата каретки и перевода строки (CR+LF). Пример: *C:\My Unix File.txt. Даже если звёздочка отсутствует, двоичный режим будет включён автоматически, если при первом использовании FileAppend в цикле записываемый текст будет содержать пары символов возврата каретки и перевода строки (`r`n). Стандартный выходной поток (stdout): если задать OutputFile как звёздочку (*), то текст, записываемый при помощи FileAppend, будет посылаться в стандартный выходной поток (stdout). Хотя такой вывод может быть перенаправлен в файл, передан по конвейеру в другую программу или перехвачен некоторыми текстовыми редакторами (см. описание директивы #ErrorStdOut), он не будет виден в окне командной строки, откуда был запущен скрипт. Подробности смотрите в описании команды FileAppend. Экранирование запятых: в отличие от последнего параметра большинства других команд, запятые в OutputFile должны экранироваться (`,). |
Цикл чтения файла полезен в случаях, когда вы хотите обработать каждую строку текстового файла по очереди. Он работает быстрее, чем команда FileReadLine, потому что: 1) файл может оставаться открытым в течение всей операции; и 2) нет необходимости каждый раз снова сканировать файл в поисках строки с нужным номером.
Встроенная переменная A_LoopReadLine существует внутри любого цикла чтения файла. Она содержит текст текущей строки, за исключением символов возврата каретки и перевода строки, отмечающих концы строк. Если цикл чтения файла находится внутри другого такого же цикла, текущая строка внутреннего цикла будет иметь преимущество.
Могут считываться строки длиной до 65534 символов. Если длина строки больше этой, её остаток будет считан в следующей итерации цикла.
Внутри цикла чтения файла часто используются команда StringSplit или цикл разбора, чтобы разбирать содержимое каждой строки, извлекаемой из InputFile. Например, если каждая строка в InputFile состоит из полей, разделённых табуляцией, эти поля могут извлекаться по отдельности, как в этом примере:
Для загрузки целого файла в переменную используйте команду FileRead, так как она работает быстрее, чем цикл (особенно для больших файлов).
Чтобы одновременно открыть несколько файлов, следуйте примеру, приведённому в описании команды DllCall.
Смотрите в описании команды Loop информацию о блоках кода, командах Break, Continue и переменной A_Index (которая существует во всех типах циклов).