Чтение онлайн

на главную - закладки

Жанры

Delphi. Учимся на примерах

Парижский Сергей Михайлович

Шрифт:

Глава 3

Работа с текстом. Статистика документа

Постановка задачи

Разработать программу, которая выводит статистику выбранного пользователем документа. Статистические данные включают в себя количество слов, символов, пробелов и строк.

Разработка формы

Создадим новый проект Delphi и разработаем интерфейс программы. Измените значение свойства Caption главной формы на Статистика. Разместите на форме компонент Label категории Standard, и присвойте его свойствам значения согласно табл. 3.1.

Таблица 3.1. Свойства компонентаLabel, размещенного на форме Статистика

Свойство Значение Пояснение
Caption Статистика Надпись метки
Font.Color clRed Цвет надписи — красный
Font.Name Courier New Шрифт надписи
Font.Size 16 Размер шрифта надписи
Font.Style [fsBold] Стиль шрифта — полужирный
Left 128 Отступ слева
Top 3 Отступ сверху

Ниже разместите компонент Edit категории Standard (поле ввода), в котором будет храниться путь к обрабатываемому файлу. Справа от него разместим кнопку (компонент Button категории Standard), которая будет открывать окно обзора для выбора файла. Присвойте свойству Button1.Caption значение Обзор.

Для реализации выбора файла разместите на форме компонент OpenDialog категории Dialogs. Измените значение свойства Name этого компонента наOpen1.

Разместите на форме четыре компонента Label и присвойте их свойству Caption значения Слов, Символов, Пробелов и Строк. Расположите эти метки одну над другой вдоль левого края формы и установите свойства шрифта согласно табл. 3.2.

Таблица 3.2. Свойства шрифта компонентов Label

Свойство Значение Пояснение
Font.Name Courier New Шрифт надписи
Font.Size 12 Размер шрифта надписи
Font.Style [fsBold] Стиль шрифта — полужирный

Разместите на форме справа от каждого предыдущих четырех меток еще четыре компонента 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); //связываем файл с переменной 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; {пополняем количество символов, если он не является переводом строки, кодом новой строки или пробелом}

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

Поделиться:
Популярные книги

После Апокалипсиса

Дивов Олег Игоревич
Фантастика:
социально-философская фантастика
боевая фантастика
7.14
рейтинг книги
После Апокалипсиса

Искатель 2

Шиленко Сергей
2. Валинор
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Искатель 2

Матабар IX

Клеванский Кирилл Сергеевич
9. Матабар
Проза:
магический реализм
5.00
рейтинг книги
Матабар IX

Родословная. Том 8

Ткачев Андрей Юрьевич
8. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Родословная. Том 8

Чехов

Гоблин (MeXXanik)
1. Адвокат Чехов
Фантастика:
фэнтези
боевая фантастика
альтернативная история
5.00
рейтинг книги
Чехов

Менталист. Конфронтация

Еслер Андрей
2. Выиграть у времени
Фантастика:
боевая фантастика
6.90
рейтинг книги
Менталист. Конфронтация

Стезя и место

Красницкий Евгений Сергеевич
5. Отрок
Приключения:
исторические приключения
8.96
рейтинг книги
Стезя и место

Тринадцатый

Северский Андрей
Фантастика:
фэнтези
рпг
7.12
рейтинг книги
Тринадцатый

Доктор Живаго

Пастернак Борис Леонидович
Проза:
русская классическая проза
8.83
рейтинг книги
Доктор Живаго

Кодекс Крови. Книга Х

Борзых М.
10. РОС: Кодекс Крови
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга Х

Черный Маг Императора 18

Герда Александр
18. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 18

Шайтан Иван 4

Тен Эдуард
4. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
8.00
рейтинг книги
Шайтан Иван 4

Аспирант

Поселягин Владимир Геннадьевич
3. Рунный маг
Фантастика:
боевая фантастика
4.50
рейтинг книги
Аспирант

Идеальный мир для Лекаря 22

Сапфир Олег
22. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 22