Работа с текстовыми файлами
Команды работы с текстовыми файлами позволяют читать текст из файла, записывать текст в файл и выполнять различные сервисные функции при работе с текстовыми файлами, как то поиск строки, подсчет количества строк в файле и пр.
Запись в файл[править | править код]
WriteStr <Fname> <N1>, <N2>, <N3>, …, <Ni>
Команда WriteStr записывает числовые данные <N1>
, <N2>
, <N3>
, …, <Ni>
в файл с именем <Fname>
. Данные будут записаны в текстовом виде по одному числу в строке.
Чтение из файла[править | править код]
ReadStr <Fname> <V1>, <V2>, <V3>, …, <Vi>
Команда ReadStr читает числовые данные из файла с именем <Fname>
в переменные с именами <V1>
, <V2>
, <V3>
, …, <Vi>
. Данные читаются последовательно, начиная с начала файла. Если число переменных для записи результата больше числа строк в файле, оставшиеся переменные не инициализируются. Если в файле содержатся нечисловые данные, выдается ошибка.
Функции работы с текстовым файлом[править | править код]
Функции GetCount, GetStr, PutStr, DelStr, FindStr, ReplaceStr служат для работы с текстовыми файлами — чтением и записью информации из файла и в файл, подсчет количества строк в файле и пр. У всех этих функций — первый параметр <Fname>
— полное имя текстового файла. Все функции, кроме GetStr, в случае ошибки чтения/записи возвращают число, меньшее нуля.
GetCount[править | править код]
INT GetCount(STRING <Fname>)
Функция возвращает количество строк в файле с именем <Fname>
. Если файла с таким именем нет, то возвращается ноль.
GetStr[править | править код]
STRING GetStr(STRING <Fname>, INT <Pos>)
Функция читает строку с номером <Pos>
из файла c именем <Fname>
. Нумерация строк начинается с единицы. Функция возвращает прочитанную строку. Если файла с таким именем не существует или номер строки выходит за диапазон строк в существующем файле, то возвращается пустая строка.
PutStr[править | править код]
INT PutStr(STRING <Fname>, STRING <Str>, INT <Pos>)
Функция записывает строку <Str>
в файл с именем <Fname>
. Если ошибок не было, функция возвращает не ноль. Если файла именем <Fname>
не существует, то он создаётся. Если в качестве имени файла задать "stdout", то вывод будет происходить в командное окно программы, а не в текстовый файл.
Параметр <Pos>
— задаёт позицию строки в файле:
<Pos>
< 0 — из существующего файла удаляются все строки, <Str>
записывается первой строкой;
<Pos>
= 0 — в конец существующего файла записывается строка <Str>
.
<Pos>
> 0 — Перед строкой <Pos>
существующего файла записывается строка <Str>
.
DelStr[править | править код]
INT DelStr(STRING <Fname>, INT <Pos>)
Функция удаляет строку с номером <Pos>
из файла с именем <Fname>
. Нумерация строк начинается с единицы. Если ошибок не было, функция возвращает ноль. Если номер строки находится вне диапазона строк файла, то операция удаления не производится.
FindString[править | править код]
INT FindString(STRING <Fname>, STRING <String>, INT <Pos>, LOGICAL <Usecase>)
Функция определяет, есть ли в файле с именем <Fname>
строка <String>
. Поиск осуществляется, начиная с позиции <Pos>
. Нумерация строк начинается с единицы. Параметр <Usecase>
определяет учёт регистра при поиске:
- 0 - не учитывать регистр;
- 1 - учитывать регистр.
Функция возвращает номер первой строки файла, которая содержит строку <String>
. Если строка не найдена, функция возвращает ноль.
FindStr[править | править код]
INT FindStr(STRING <Fname>, STRING <Substring>, INT <Pos>, LOGICAL <Usecase>)
Функция определяет, есть ли в файле с именем <Fname>
в строке с номером <Pos>
подстрока <Substring>
. Параметр <Usecase>
определяет учёт регистра при поиске:
- 0 - не учитывать регистр;
- 1 - учитывать регистр.
Функция возвращает номер символа начала подстроки в строке. Нумерация символов в строке начинается с единицы. Если подстрока не найдена, функция возвращает ноль.
FindStrN[править | править код]
INT FindStrN(STRING <Fname>, STRING <Substring>, INT <Pos>, INT <From>, LOGICAL <Usecase>)
Функция определяет, есть ли в файле с именем <Fname>
в строке с номером <Pos>
подстрока <Substring>
. Поиск начинает с позиции <From>
Параметр <Usecase>
определяет учёт регистра при поиске:
- 0 - не учитывать регистр;
- 1 - учитывать регистр.
Функция возвращает номер символа начала подстроки в строке. Нумерация символов в строке начинается с единицы. Если подстрока не найдена, функция возвращает ноль.
ReplaceStr[править | править код]
INT ReplaceStr(STRING <Fname>, STRING <Str>, INT <Pos>)
Функция заменяет в файле с именем <Fname>
строку с номером <Pos>
на строку <Str>
.
Нумерация строк начинается с единицы. Если номер строки находится вне диапазона строк файла, то операция замены не производится. Если ошибок не было, функция возвращает ноль.
Пример:
fn="a.txt" =PutStr(fn,"Строка № 1",-1) // Записываем первую строку в новый файл 0 =PutStr(fn,"Строка № 3",0) // Дописываем строку в конец файла 0 =PutStr(fn,"Строка № 2",2) // Вставляем новую строку перед 2-й строкой 0 =GetCount(fn) // В файле 3 строки 3 =GetStr(fn,2) // Содержимое второй строки "Строка № 2" =ReplaceStr(fn,"Новая строка 2",2) // Заменяем вторую строку 0 =GetStr(fn,2) // Содержимое второй строки "Новая строка 2" =FindStr(fn,"вая",2,0) // Есть ли в строке 2 подстрока "вая"? // Да, начинается с 3-го символа 3 =DelStr(fn,2) // Удаляем вторую строку 0 =FindStr(fn,"вая",2,0) // Есть ли в строке 2 подстрока "вая"? Нет 0