Разместите на форме справа от каждого предыдущих четырех меток еще четыре компонента Label и присвойте им имена (свойство Name) words, symbols, spaces и lines. Присвойте значения свойствам этих меток согласно табл. 3.3.
Таблица 3.3. Свойства компонентов words, symbols, spaces и lines
Свойство | Значение | Пояснение |
---|---|---|
Caption | 0 | Надпись метки |
Font.Color | clRed | Цвет надписи — красный |
Font.Name | Courier New | Шрифт надписи |
Font.Size | 12 | Размер шрифта надписи |
Font.Style | [fsBold] | Стиль шрифта — полужирный |
Left | 112 | Отступ слева |
В правом нижнем углу формы разметим кнопку (компонент Button), по нажатию которой будут выполняться расчёты и выводиться все данные. Свойству Caption этой кнопки присвоим значение Статистика. На этом разработка формы завершена. Полученный результат должен примерно соответствовать рис. 3.1
Рис. 3.1. Форма Статистика
Разработка программного кода
В этой программе следует обработать только два события: нажатие кнопки Обзор
и нажатие кнопки Статистика. Сначала — о кнопке Обзор:procedure TForm1.Button1Click(Sender: TObject);
begin
//начинаем обзор с текущей папки
Open1.InitialDir:= GetCurrentDir;
if Open1.Execute then Edit1.Text:= Open1.FileName
else ShowMessage('Файл не выбран!');
end;
Начинаем обзор с каталога, в котором в данный момент находится программа. Затем следует стандартная проверка: если файл не был выбран, то сообщаем об этом пользователю, иначе отображаем путь к файлу в поле Edit1.
При нажатии кнопки Статистика
выполняется подсчет и отображение данных о выбранном файле: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);
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;