Delphi. Учимся на примерах - [5]

Шрифт
Интервал

>   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;

> 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 <> 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;

>end.

⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter 03.

Глава 4

Снимок экрана

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

Разработать программу, которая будет снимать и сохранять копию экрана.

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

Создайте новый проект Delphi и измените заголовок формы (свойство Caption) на Screenshot. Чтобы пользователь не мог изменять размеры окна при работе с программой, следует присвоить свойству BorderStyle значение bsDialog. Для удобства создания копий экрана окно программы должно быть всегда размещено поверх остальных окон. Для этого присвоим свойству FormStyle значение fsStayOnTop. Мы можем себе это позволить: на самой копии экрана окно нашей программы отображено не будет, поскольку в момент создания копии оно будет временно сокрыто.

Для сохранения копии экрана нам понадобится компонент SaveDialog категории Dialogs. Разместите этот компонент на форме. Поскольку мы заранее знаем, что будем сохранять рисунок, то свойству SaveDialog1.Filter присвойте значение Рисунок|*.bmp|Все файлы|*.*. При сохранении файла у пользователя будет выбор: сохранять файл как рисунок (*.bmp) или как любой другой файл (*.*).

Разместите вдоль правого края формы четыре кнопки (компоненты Button категории Standard) со следующими заголовками (свойство Caption): Сделать снимок экрана, Показать снимок, Очистить и Сохранить. Также нам потребуется компонент, который будет отображать полученную копию экрана. Для этих целей мы будем использовать компонент Image категории


Рекомендуем почитать
Графика DirectX в Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.