Delphi. Учимся на примерах | страница 9



>begin

> symbol:= 0; //обнуляем предыдущие результаты

> word:= 0;

> space:= 0;

> line:= 0;

> if FileExists(Edit1.Text) //проверяем, существует ли файл

> then begin

>  AssignFile(f, Edit1.Text); //связываем файл с переменной f

>  reset(f); //открываем файл на чтение

>  while not eof(f) do

>  begin //читаем файл до достижения конца файла

>   oldstr:= str;

>   Read(f, str); //считываем символ в переменную str

>   if ((str <> 32) and (str <> 13) and (str <> 10)) then symbol:= symbol + 1; {пополняем количество символов, если он не является переводом строки, кодом новой строки или пробелом}

>   //если считан пробел, пополним счетчик пробелов

>   if str = 32 then space:= space + 1;

>   if str = 13 then line:= line + 1; //счетчик строк

>   if ((str = 32) or (str = 13) or (str = 10)) then

>    if ((oldstr<>32) and (oldstr<>10) and (oldstr<>13)) then word:= word + 1; //счетчик слов

>  end;

>  CloseFile(f); //закрываем файл

> end

> else ShowMessage('Ошибка: Файл не найден!'); {если файл не найден, то выводим сообщение об ошибке}

> //Выводим всю полученную информацию о файле

> symbols.Caption:= IntToStr(symbol);

> spaces.Caption:= IntToStr(space);

> lines.Caption:= IntToStr(line);

> words.Caption := IntToStr(word);

>end;

Сначала мы проверяем, существует ли файл, статистику которого будем определять. Если все нормально, то начинаем считывать из этого файла по одному символу и проверять по коду, что это за символ. Если код символа равен 32, то это — пробел, и мы пополняем счетчик пробелов. Если код считанного символа равен 13, то это — символ перевода строки, и мы пополняем счетчик строк. Если считанный символ не является пробелом или символом перевода строки, то это — обычный символ и следует пополнить счетчик символов. Для того чтобы подсчитать количество слов, мы выполняем следующую проверку: если считан пробел или символ перевода строки, то проверяем, является ли предыдущий символ пробелом или символом перевода строки, и если это так, пополняем счетчик слов.

Результат выполнения программы представлен на рис. 3.2.

Рис. 3.2. Программа Статистика в действии

Полный исходный код модуля

Код модуля программы Статистика представлен в листинге 3.1.

Листинг 3.1. Модуль программы Статистика

>unit Unit1;

>interface

>uses

> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

>type TForm1 = class(TForm)

> Label1: TLabel;

> Label2: TLabel;

> Label3: TLabel;

> Label4: TLabel;

> Label5: TLabel;

> words: TLabel;

> symbols: TLabel;