Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Р7_File_печать.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
184.32 Кб
Скачать

Пример 3. Чтение из типизованного файла

Дано: типизованный файл D:\Stud\FM.Dat, содержащий массив вещественных чисел; количество элементов массива не известно.

Требуется:

  • определить размер N массива файла D:\Stud\FM.Dat;

  • определить динамический массив М;

  • элементам массива М присвоить значения элементов массива файла FM.Dat;

  • массив М распечатать в Label1.

В разделе implementation описаны:

Type Mas = Array of real;

Var M: Mas; //массив

F : File of real; //файловая переменная

………………………

{текст процедуры обработки события, например “Нажатие кнопки”}

Var i, N: Byte;

//i - счётчик, N – размер массива, количество элементов в файле

Begin

If OpenDialog1.Execute {окно «Открытие документа», открываем D:\Stud\FM.Dat}

then begin

AssignFile(F, OpenDialog1.FileName); {Устанавливает связь между F и выбранным в диалоге файлом }

Reset(F); //Направление передачи данных – чтение

end; //конец диалога

N := FileSize(F); //количество элементов в файле и в массиве

SetLength(M, N-1) ; //задаём длину массива, счёт от 0

Label1.Caption := ‘’; //очищаем метку вывода

For i := 0 to N-1 do

begin

read(F, M[i]); //считан элемент из файла, значение присвоено M[i]

Label1.Caption := Label1.Caption+FloatToStr(M[i])+' '#13;

//вывод iэлемента массива

end; //конец цикла

………………..

Пример 4. Чтение из типизованного файла с контролем ошибок

При попытке открыть файл для чтения может возникнуть ошибка, например, из-за несоответствия типов файловой переменной и типизованного файла. Отключим контроль ошибок ввода-вывода {$I-} и воспользуемся функцией IOResult: Integer, возвращающей код ошибки после включёния контроля ошибок {$I+}.

Дополним рассмотренный ранее пример 3 контролем ошибок доступа к файлу. Дополнения выделены курсивом.

В разделе implementation описаны:

Type Mas = Array of real;

Var M: Mas; //массив

F : File of real; //файловая переменная

{В свойство Title введено: “Открытие файла данных”}

………………………

{текст процедуры обработки события, например “Нажатие кнопки”}

Var i, N: Byte;

//i - счётчик, N – размер массива, количество элементов в файле

Begin

If OpenDialog1.Execute //открыть диалог для поиска файла

then begin

AssignFile(F, OpenDialog1.FileName);

{$I-} //компилятору отключить контроль ввода-вывода

Reset(F); //Направление передачи данных – чтение

{$I+} //компилятору включить контроль ввода-вывода

end; //конец диалога

if IOResult = 0

then begin //доступ к файлу FileName открыт

SHowMessage( 'Открыт '+OpenDialog1.FileName + #13+

'Размер '+ IntToStr(FileSize(F)));

end

else begin

SHowMessage( 'код ошибки доступа '+ IntToStr(IOResult) );

CloseFile(F);

exit; //досрочное завершение процедуры

end;

N := FileSize(F); //количество элементов в файле и в массиве

SetLength(M, N-1) ; //задаём длину массива, счёт от 0

Label1.Caption := ‘’; //очищаем метку вывода

For i := 0 to N-1 do

begin

read(F, M[i]); //считан элемент из файла, значение присвоено M[i]

Label1.Caption := Label1.Caption+FloatToStr(M[i])+' '#13; //вывод

end; //конец цикла

………………..

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]