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

Разработка программного кода

Разработка программного кода

В этой программе следует обработать только два события: нажатие кнопки Обзор и нажатие кнопки Статистика. Сначала — о кнопке Обзор:

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; {пополняем количество символов, если он не является переводом строки, кодом новой строки или пробелом}
   //если считан пробел, пополним счетчик пробелов
   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. Программа Статистика в действии

Оглавление книги


Генерация: 0.033. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз