В качестве примера рассмотрим небольшой фрагмент исходного кода.

var F: TextFile;
S: String;
begin if OpenDlg.Execute then AssignFile(F, OpenDlg.FileName) else Exit;
Reset (F) ;
while Not EDF (F) do begin
Readln(F, S);
Memo.Lines.Add(S);
end;
CloseFile(F);
end;

Если в диалоге открытия файла OpenDlg был выбран файл, то его имя связывается с файловой переменной F при помощи процедуры AssignFile. В качестве имени файла рекомендуется всегда передавать полное имя файла (включая его маршрут). Как раз в таком виде возвращают результат выбора файла диалоги работы с файлами TOpenDialog, TOpenPictureDialog. Затем при помощи процедуры Reset этот файл открывается для чтения и записи.

В цикле выполняется чтение из файла текстовых строк и запись их в компонент тмето. Процедура Readln осуществляет чтение текущей строки файла и переходит на следующую строку. Цикл выполняется, пока функция EOF не сообщит о достижении конца файла.

После завершения чтения файл закрывается.

Такой же исходный код можно использовать и для записи данных в файл. Необходимо только заменить процедуру чтения на процедуру записи.

Теперь остановимся подробнее на назначении используемых для файлового ввода/вывода функций.

Открытие файла может осуществляться тремя процедурами - в зависимости от типа его дальнейшего использования.

Процедура

procedure Reset (var F: File [;
RecSize: Word ] ) ;

открывает существующий файл для чтения и записи, текущая позиция устанавливается на первой строке файла.

Процедура

procedure Append (var F: Text);

открывает файл для записи информации после его последней строки, текущая позиция устанавливается на конец файла.

Процедура

procedure Rewrite (var F: File [;
RecSize: Word ] ) ;

создает новый файл и открывает его, текущая позиция устанавливается в начало файла. Если файл с таким именем уже существует, то он перезаписывается.

Переменная RecSize используется только при работе с нетипизированными файлами и определяет размер одной записи для операции передачи данных. Если этот параметр опущен, то по умолчанию RecSize равно 128 байт.

Чтение данных из типизированных и текстовых файлов выполняют процедуры Read И Readln.

Процедура Read имеет различное объявление для текстовых и других типизированных файлов:

□procedure Read( [var F: Text;
] VI [, 42, . . ., Vn]) ;
для текстовых файлов;
□
procedure Read(F, VI [, V2,...,Vn]);

для других типизированных файлов.

При одном вызове процедуры можно читать данные в произвольное число переменных. Естественно, что тип переменных должен совпадать с типом файла. При чтении в очередную переменную читается ровно столько байтов из файла, сколько занимает тип данных. В следующую переменную читается столько же байтов, расположенных следом. После выполнения процедуры текущая позиция устанавливается на первом непрочитанном байте. Аналогично работают несколько процедур Read для одной переменной, выполненных подряд.

Процедура

procedure Readiri ([ var F: Text;
] Vl [, V2,... , Vh ] ) ;

считывает одну строку текстового файла и устанавливает текущую позицию на следующей строке. Если использовать процедуру без переменных vl. . Vn, то она просто передвигает текущую позицию на очередную строку файла.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Декабрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31