Полный исходный код модуля
Код модуля программы Статистика представлен в листинге 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;
spaces: TLabel;
lines: TLabel;
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
Open1: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButtonlClick(Sender: TObject); begin
//начинаем обзор с текущей папки
Open1.InitialDir:= GetCurrentDir;
if Open1.Execute // открываем диалоговое окно выбора файла
then Edit1.Text:= Open1.FileName
else ShowMessage('Файл не выбран!');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
f: file of byte; //Переменная для работы с файлом
str: byte; //Содержит считанный байт
oldstr, symbol, word, line, space: Integer;
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 lt;gt; 32) and (str lt;gt; 13) and (str lt;gt; 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 ((oldstrlt;gt;32) and (oldstrlt;gt;10) and (oldstrlt;gt;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;
end.
#8858; Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter 03.