ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Чтение из текстового файла "числовой" информации в числовой массив.
Пример 1. Пусть текстовый файл состоит из чисел (в строковом представлении), расположенных в виде прямоугольной таблицы:
23 45 56 12 56 29 43 18 999 444 21 19 222 12 18
Мы хотим считать эту таблицу из файла в двумерный массив z. Данный способ удобен, если имеется множество однотипных столбцов.
procedure TForm1.Button4Click(Sender: TObject); var i,j:integer; x: integer; z:array[1..5,1..3] of integer; f:TextFile; begin AssignFile(f,'MyInputMatrix.txt'); reset(f); for i:=1 to 5 do begin for j:=1 to 3 do begin read(f,x); z[i,j]:= x; end; end; CloseFile(f); end; Пример 2. Пусть текстовый файл состоит из чисел (в строковом представлении), расположенных в виде прямоугольной таблицы:
1 45 56.45 2 56 29.33 3 18 999.34 4 21 19.1 5 12 18.333
Причем, мы хотим разместить каждый столбик в отдельном одномерном массиве.
procedure TForm1.Button5Click(Sender: TObject); var i:integer; z1: array[1..5] of integer; z2, z3, zrez: array[1..5] of real; f:TextFile; begin AssignFile(f,'MyInputMatrix.txt'); reset(f); for i:=1 to 5 do begin readln(f,z1[i],z2[i],z3[i]); {читаем сразу строку, а элементы строки представляющие числа, отделенные друг от друга пробелами записываются в соответствующие одномерные массивы z1,z2,z3, причем в зависимости от типа переменных z1,z2,z3 первое число в строке при переводе будут трактоваться как целое, а два следующих как вещественные} end; CloseFile(f); {теперь можно работать с этими массивами, например: } for i:=1 to 5 do zrez[i]:= z2[i] / z3[i]; { деление друг на друга соответствующих элементов массивов}
end;
Пример 3. Пусть текстовый файл состоит из чисел (в строковом представлении), расположенных в виде прямоугольной таблицы:
1 45 56.45 2 56 29.33 3 18 999.34 4 21 19.1 5 12 18.333 …………….. 1000000 34 19.15
Файл состоит из 1000000 строк, поэтому нам не разместить такие большие массивы в памяти, но обрабатывать информацию можно построчно.
procedure TForm1.Button5Click(Sender: TObject); var i:integer; z1: of integer; z2, z3, zrez: real; f1,f2:TextFile; begin AssignFile(f1,'MyInputMatrix.txt'); AssignFile(f2,'MyOutputMatrix.txt');
reset(f1); rewrite(f2); while not EOF(f1) do begin readln(f1,z1,z2,z3); {читаем сразу строку, а элементы строки представляющие числа, отделенные друг от друга пробелами записываются в соответствующие переменные z1,z2,z3, причем в зависимости от типа переменных z1,z2,z3 первое число в строке при переводе будут трактоваться как целое, а два следующих как вещественные}
zrez:= z2 / z3; { деление друг на друга соответствующих элементов строки}
writeln(f2, z1:7, zrez:8:2); {сразу записываем строку содержащую номер строки и результат вычисления во второй файл, причем указываем сколько знаков числа будет помещено в строковое представление числа после преобразования из числового представления} end;
CloseFile(f1); CloseFile(f2);
end;
3. Вывод: мы приобрели навыки работы с записью и чтением текстовых файлов в Delphi. Познакомились с паскалевским методом доступа и с методом работы с текстовыми файлами через файловые потоки.
Не нашли, что искали? Воспользуйтесь поиском:
|