Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 285; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.11 (0.006 с.) |