Работа с текстовыми файлами
Пример 6.
Программа читает текстовый файл (не более 10Кб) и выводит его на экран.
--- Текст программы ----
Program N_file;
const max = 10240;
var fil1: file; fname: string;
fsize: longint; buffer: array [1..max] of char;
jj,kk: Integer;
begin
for jj:=1 to max do buffer[jj] := #0; {заполняем символом #0}
write('Имя файла для чтения '); readln(fname);
assign(fil1,fname);
{$I-}
reset(fil1,1);
{$I+}
if IOResult <> 0 then
begin
writeln('Файл не найден. Нажмите Enter'); readln; exit;
end;
fsize := FileSize(fil1); {размер файла}
if fsize > max then
begin
writeln('Большой файл не читаю. Нажмите Enter'); readln; exit;
end;
jj := 1;
while not eof(fil1) do {цикл до конца файла}
begin
blockread(fil1,buffer[jj],10,kk); {Читаю kk <= 10 байт и помещаю в буфер}
inc(jj,kk); {смещаю адрес начала записи в буфер на kk байт}
end;
jj:=1;
while buffer[jj] <> #0 do {вывожу массив buffer (буфер) на экран}
begin write(buffer[jj]); {посимвольно}
inc(jj);
end;
readln;
end.
==== Файл с данными (my.txt): =====
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
12.44 - пример вставки комментариев в текстовый файл, хранящий числа.
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
12.44 - пример вставки комментариев в текстовый файл, хранящий числа.
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
12.44 - пример вставки комментариев в текстовый файл, хранящий числа.
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
12.44 - пример вставки комментариев в текстовый файл, хранящий числа.
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
12.44 - пример вставки комментариев в текстовый файл, хранящий числа.
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
=== Результат работы програмы =====
Имя файла для чтения my.txt
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
12.44 - пример вставки комментариев в текстовый файл, хранящий числа.
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
12.44 - пример вставки комментариев в текстовый файл, хранящий числа.
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
12.44 - пример вставки комментариев в текстовый файл, хранящий числа.
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
12.44 - пример вставки комментариев в текстовый файл, хранящий числа.
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
12.44 - пример вставки комментариев в текстовый файл, хранящий числа.
2.34 - это первое число;
-15.76 - это второе число
76.12 - еще число
Пример 7.
Программа генерирует заданное количество случайных чисел в диапазоне 0..100 и записывает их в файл с заданным именем. Используется доступ к файлу как нетипизированному (для ускорения работы). Результат читается программой примера 8.
--- Текст программы ----
program gen_random;
var ff: file; count, num, ii: integer;
fname: string;
begin
write('skoko -> '); readln(count);
write('file -> '); readln(fname);
assign(ff,fname);
{$I-}
rewrite(ff,sizeof(integer));
randomize;
for ii:=1 to count do
begin
num := random(100);
blockwrite(ff,num,1);
end;
close(ff);
end.
Пример 8.
Читает файл чисел типа integer и подсчитывает количество чисел в интервалах
0..19, 20-39, 40-59, 60-79, 80-99. Можно проверить утверждение фирмы Borland о том, что Random генерирует случайные числа, распределенные нормально.
--- Текст программы ----
program get_random;
var ff: file; count, num, ii, co20,co40,co60,co80,co100: integer;
fname: string;
begin
write('file -> '); readln(fname);
assign(ff,fname);
{$I-}
reset(ff,sizeof(integer));
co20:=0; co40:=0; co60:=0; co80:=0; co100 := 0;
while not eof(ff) do
begin
blockread(ff,num,1);
case num of
0..19: inc(co20);
20..39: inc(co40);
40..59: inc(co60);
60..79: inc(co80);
80..99: inc(co100);
end; {case}
end;
close(ff);
writeln(co20:6, co40:6, co60:6, co80:6, co100:6);
readln;
end.
===== Результат работы: ======
file -> rnd1.dat
204 198 203 197 198
---------------------------
То есть числа распределены равномерно.
Сомневающиеся могут генерировать 20000 чисел
программой примера 7, затем прочесть этой программой.
---- Результат: -------
file -> rnd1.dat
4057 3975 3975 3935 4058