Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Лабы_Ч2.doc
Скачиваний:
5
Добавлен:
09.11.2019
Размер:
2 Mб
Скачать

Пример добавления данных из одного файла к другому

Ниже приведен фрагмент процедуры.

var s:String;

begin

Reset(f1); Append(f2);

while not eof(f1) do begin

readln(f1,s);

writeln(f2,s);

end;

CloseFile(f1);

CloseFile(f2);

Пример чтение из файла в поле Memo

...

var buf: String;

begin

AssignFile(f, ‘Primer.txt’);

try

reset(f); //Открыть для чтения

except

showMessage(‘Ошибка доступа к файлу’);

exit;

end;

// Цикл чтение из файла

while not eof(f) do

begin

Readln(f, buf); // прочитать строку из файла в переменную buf

Memo1.Lines.Add(buf); // добавить строку, содержащуюся

// в переменной buf к строка поля Memo1

end;

closeFile(f);

end;

Пример ввода-вывода при работе с массивом

При вводе числовых массивов можно использовать процедуру read() для считывания элементов массива. Элементы могут располагаться в файле произвольно. Считывание производится, пока не будет достигнут конец файла.

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

Ниже приведен пример ввода массива из текстового файла, его обработка и вывод массива результатов.

Считывается столько элементов массива, сколько их в файле. Расположение элементов массива в файле не имеет значения

Обработка заключается в накоплении значений элементов массива.

Массив, полученный в результате обработки, выводится столбиком, то есть каждый элемент отдельной строкой.

//Работа с массивом

procedure TForm1.btnArrayClick(Sender: TObject);

var a:array[1..100] of integer; i, count: integer;

begin

Reset(f1); Rewrite(f2);

//Ввод массива

count:=0;

while not eof(f1) do begin

count:=count+1;

read(f1,a[count]);

end;

//Обработка массива

for i:=2 to count do a[i]:=a[i]+a[i-1];

//Вывод массива

for i:=1 to count do writeln(f2,a[i]);

closeFile(f1);

closeFile(f2);

end;

Пример ввода-вывода при работе с матрицей

Особенность считывания матриц из текстового файла состоит в том, что необходимо распознавать строки. Для решения этой задачи можно использовать цикл ввода элементов строки с помощью функции read(). Элементы строки вводятся пока значение функцию Eoln() равно false. Количество столбцов матрицы будет равно количеству элементов в строке.

Очевидно, что данные в текстовом файле должны быть расположены в виде таблицы. Произвол здесь уже не допустим.

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

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

//Работа с матрицей и текстовым файлом

procedure TForm1.btnMatrixClick(Sender: TObject);

var m: array[1..10, 1..10] of integer; i, j, countRow, countCol: integer;

begin

reset(f1); rewrite(f2);

//Вводим первую строку и определяем число столбцов матрицы

countCol:=0;

while not eoln(f1) do begin

countCol := countCol + 1;

read(f1, m[1, countCol]);

end;

readln(f1); //переход к новой строке

if countCol > 0 then countRow:=1 else exit;

//Вводим оставшиеся строки

while not eof(f1) do begin

countRow:=countRow+1;

j:=0;

while not eoln(f1) do begin

j:=j+1;

read(f1, m[countRow, j]);

end;

readln(f1); //переход к новой строке

end;

//Вывод матрицы

for i:=1 to countRow do begin

for j:=1 to countCol do write(f2, m[i,j]:6);

writeln(f2);//переход к новой строке

end;

closeFile(f1);

closeFile(f2);

end;