Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Работа с текстовыми файлами. Чтение из текстового файла
На прошлых уроках мы как, в компоненте Memo процесс загрузки и записи текстового файла делался следующим образом: Memo1.Lines.LoadFromFile(Имя_файла); // загрузка Memo1.Lines.SaveToFile(Имя_файла); // сохранение Все это благодаря свойству Lines, в котором хранятся строки. Но на практике иногда необходимо прочитать только определенную строку или совершить операцию добавления строки в уже существующий файл. Следующий пример обработки текстового файла очень похож на аналогичную на языке Pascal. procedureTForm1.Button1Click(Sender: TObject); Varf:TextFile; // объявление файловой переменной st: String; // строковая переменная begin AssignFile(f,'c:\1.txt'); // привязка названия файла к файловой переменной {$I-} // отключение контроля ошибок ввода-вывода Reset(f); // открытие файла для чтения {$I+} // включение контроля ошибок ввода-вывода ifIOResult<>0 then // если есть ошибка открытия, то Begin ShowMessage('Ошибка открытия файла C:\1.TXT'); Exit; // выход из процедуры при ошибке открытия файла end;
While not EOF(f) do // пока не конец файла делать цикл: Begin ReadLn(f,st); // читать из файла строку ShowMessage(st); // выводить строку пользователю end; CloseFile(f); // закрыть файл end; Прокомментирую некоторые строки этого примера. Команда AssignFile осуществляет привязку строки пути файла к файловой переменной. Все дальнейшие операции с файловой переменной автоматически осуществляются с указанным файлом. Для избежания путаниц, указывайте полный путь к файлу. {$I-} и {$I+} являются директивами компилятору, что в этом месту соответственно следует отключить и включить контроль ошибок ввода-вывода. В данном случае при неудачной попытке открытия файла c:\1.txt (файл отсутствует или открыт для записи другой программой) наша программа не выдаст аварийной ошибки и продолжит выполнение данной процедуры. Это свойство полезно для обработки всех возможных случаев в работе программы. IOResult – переменная, которая хранит в себе код ошибки последней операции ввода-вывода. Если она равна нулю, то последняя операция была успешно выполнена. EOF(Файл) – функция, возвращающая признак конца файла. Т.е. она показывает, достигнут или нет конец открытого файла. ReadLn(Файл,Переменная) – процедура считывания переменной из файла. В отличие от команды Read производит считывание строки с завершающимся символом перевода строки под кодами 13 и 10 (клавиша Enter).
CloseFile(Файл) – процедура закрытия ранее открытого файла. Работа с текстовыми файлами. Запись в текстовый файл Рассмотрим пример: procedure TForm1.Button1Click(Sender: TObject); Var f:TextFile; // указатель на текстовый файл begin AssignFile(f,'c:\1.txt'); // привязка названия к переменной {$I-} Append(f); // открыть файл для добавления if IOResult<>0 then // если ошибка открытия (напр. файла нет) Begin {$I-} Rewrite(f); // создать новый файл {$I+} if IOResult<>0 then // ошибка создания файла Begin ShowMessage('Ошибка создания файла C:\1.TXT'); Exit; end; end; WriteLn(f,'Привет'); // запись в файл строки с символами перевода строки CloseFile(f); // закрыть файл end; Процедура Append(Файл) открывает файл для записи и устанавливает указатель записи в конец файла, т.е. все добавляемые к файлу строки будут записаны в конец файла. В нашем случае в самом начале файла 1.txt может не оказаться на диске, поэтому команда открытия файла для добавления вызовет ошибку. В этом случае срабатывает наш собственный контроль ошибок и выполняется команда создания файла.
procedure Append (var F: Text); Открытие текстового файла в режиме записи. Отличается от процедуры Rewrite тем, что не стирает все содержимое, а устанавливает текущую позицию в самый конец файла, что позволяет добавлять информацию procedure AssignPrn(var F: Text); Вся информация, записываемая в файл, перенаправляется на принтер. Файл должен быть открыт с помощью процедуры Rewrite function Eoln (var F: Text): Boolean; Возвращает значение True, если текущая позиция в файле расположена либо в конце файла, либо в конце строки. Такая проверка может понадобиться, если ввод выполняется с помощью процедуры Read, не переходящей к началу следующей строки автоматически.
procedure Erase(var F: Text); Удаление файла. Он должен быть определен с помощью процедуры AssignFile, но не должен быть открыт
procedure Flush(var F: Text); Информация, которая была записана в файл из программы, но находится во временном буфере, физически перемещается в файл на диске
function SeekEof (var F: Text): Boolean; Возвращает значение True, если текущая позиция расположена в конце файла
function SeekEotn(var F: Text): Boolean; Возвращает значение True, если текущая позиция расположена е конце строки
procedure SetTextBuf (var F: Text;var Buf; Size: Integer); Устанавливает размер буфера для операций ввода/вывода с текстовыми файлами (параметр Size). Этот буфер располагается внутри программы. Он указывается в качестве второго параметра. Это может быть, например, массив символов
Конец файла В процессе обработки файла часто возникает потребность обнаруживать его конец. Например, когда файл необходимо прочитать от начала до конца при поиске нужной записи. Для подобного контроля в Паскале имеется функция Eof, единственный параметр которой — файловая переменная. Эта функция возвращает значение True, если после выполнения последней операции ввода/вывода текущая позиция ока- зывается в самом конце файла и дальнейшее считывание данных невозможно. Как правило, данная функция применяется при вводе, потому что запись в файл, откры- тый с помощью процедуры Rewrite, выполняется последовательно и текущая пози- ция всегда расположена в конце файла. ВНИМАНИЕ При использовании функции Eof надо помнить, что если она вер- нула значение True, то попытка выполнить считывание из файла приведет к ошибке. В следующем примере выполняется подсчёт числа строк в текстовом файле. AssignFile(F, 'C:\A.TXT'); Reset (F); i:= 0; while not Eof (F) do begin ReadLn(F,S); inc (i); end; CloseFile(F); Значение переменной i будет увеличиваться при каждой операции ввода строки.
|
||||||
Последнее изменение этой страницы: 2017-02-21; просмотров: 179; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.140.198.12 (0.012 с.) |