Оглавление Работа с текстовыми файлами


Пример 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
Rambler's Top100
Hosted by uCoz