Руководство разработчика

Метод ТИП_ФАЙЛ.СЧИТАТЬ_ПАРАМ

Метод СЧИТАТЬ_ПАРАМ считывает строку, часть строки или несколько строк из файла. Прочитанные данные помещаются в строку или список. Режим чтения определяется задаными параметрами.

ФУНКЦИЯ СЧИТАТЬ_ПАРАМ(ТИП_СТРОКА: парам; ПЕРЕМ ТИП_СТРОКА или ТИП_СПИСОК: данные)

Параметры

парам
Параметры чтения данных из файла. Параметры в строке разделяются точкой с запятой. В завимости от того, какого типа переменная указана в параметре "данные", доступны для использования различные параметры.
  • "EOL" – сохранять символы конца строки CR LF (ASCII 13 10) в данных (EOL - End Of Line). По умолчанию эти символы отбрасываются. Одиночные символы CR и LF также интерпретируются как конец строки и сохраняются в данных. Режим может быть полезен, когда присутствует перенос длинных строк из-за превышения длины 255 символов.
  • "PART" – включает режим чтения длинной строки (более 255 символов) по частям. Этот режим применяется только с параметром "данные" строкового типа. По умолчанию длинная строка обрезается до 255 символов, а следующее считывание возвращает уже следующую строку. В режиме чтения по частям следующее считывание возвращает очередную часть длинной строки до тех пор, пока не будет достигнут конец строки. Это единственный способ чтения длинных строк без использования списков.
  • "ALL" – включает режим чтения всего содержимого файла от текущей позиции до конца. Если файл был только что открыт, то считывается все содержимое файла. Используется только при получении данных в виде объекта "список". По умолчанию в список считывается только одна строка. Если при этом ее длина превышает 255 символов, то она нарезается на части по 255 символов и в таком виде помещается в список.
    Дополнительное указание режима "WRAP" позволяет произвести заполнение списка с учетом имеющихся переносов строк. А дополнительное указание режима "EOL" позволяет сохранить информацию об исходных концах строк и отличать такие переносы от образовавшихся в результате нарезки длинных строк.
  • "WRAP" – включает переноса по строкам (line wrapping) при чтении содержимого файла. Используется только при получении данных в виде объекта "список" и использовании режима "ALL". Учет имеющихся в тексте переносов строк позволяет более наглядно заполнить список. На части нарезаются только строки длинее 255 символов, а более короткие строки добавляются в список отдельной строкой. По умолчанию в список заносится прочитанное содержимое нарезанное блоками по 255 символов.
  • "CSV" – позволяет считать строку в формате CSV с разделителем ";". Поддерживается только для данных, указанных в виде списка. Колонки CSV-файла заносятся в качестве элементов списка (см. Пример 3). Текст колонок длинее 255 символов обрезается. Все прочие опции, кроме "EOL", игнорируются.
данные
Выходной параметр. Переменная типа строка или список. Принимает считанные из файла данные.

Замечание 1

Вызов СЧИТАТЬ_ПАРАМ("", стр), где стр является строковой переменной, эквивалентен вызову метода стр=СЧИТАТЬ.

Замечание 2

Вызов СЧИТАТЬ_ПАРАМ("", сп), где сп является переменной типа "список", эквивалентен вызову метода сп.СЧИТАТЬ(файл, ДА).

Пример использования 1

Считывание длинной строки по частям.

файл = "long_utf8.txt"
кодировка = "UTF-8"

ф = ФАЙЛ_ОТКРЫТЬ(файл, кодировка)

ЦИКЛ ПОКА (НЕ ф.КОНЕЦ_ФАЙЛА)
  стр = ""
  ф.СЧИТАТЬ_ПАРАМ("PART", стр)
  // отображаем очередную строку или очередную часть длинной строки
  ОТЛАДКА(стр) 
КОНЕЦ_ЦИКЛА

Пример использования 2

Считывание всего содержимого файла с переносом по строкам.

файл = "long_1251.txt"
кодировка = "ANSI"

СОЗДАТЬ(сп, ТИП_СПИСОК)

// открываем файл и считываем все его содержимое
ф = ФАЙЛ_ОТКРЫТЬ(файл, кодировка)
ф.СЧИТАТЬ_ПАРАМ("ALL;WRAP", сп)

// показываем считанный список в окне отладки 
ЦИКЛ ДЛЯ (и=1, сп.ВСЕГО)
 ОТЛАДКА(сп.СТРОКА(и))
КОНЕЦ_ЦИКЛА

Пример использования 3

Считывание файла в формате CSV.

ф = ФАЙЛ_ОТКРЫТЬ("import.csv", "ANSI")

НомСтр = 1
ЦИКЛ ПОКА (НЕ ф.КОНЕЦ_ФАЙЛА)
  СОЗДАТЬ(стр, ТИП_СПИСОК)
  ф.СЧИТАТЬ_ПАРАМ("CSV", стр)
  КолКол = стр.ВСЕГО
  ОТЛАДКА("Строка " + СТР(НомСтр) + " содержит " + СТР(КолКол) + " колонок")
  НомСтр = НомСтр + 1
КОНЕЦ_ЦИКЛА

См. также: