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

на главную

Жанры

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

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

Шрифт:

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('Ошибка: Файл не найден !'); {если файл не найден, то выводим сообщение об ошибке}

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

Заставь меня остановиться 2

Юнина Наталья
2. Заставь меня остановиться
Любовные романы:
современные любовные романы
6.29
рейтинг книги
Заставь меня остановиться 2

Усадьба леди Анны

Ром Полина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Усадьба леди Анны

Мимик нового Мира 10

Северный Лис
9. Мимик!
Фантастика:
юмористическое фэнтези
альтернативная история
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 10

Кодекс Охотника. Книга IX

Винокуров Юрий
9. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга IX

Игрок, забравшийся на вершину. Том 8

Михалек Дмитрий Владимирович
8. Игрок, забравшийся на вершину
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Игрок, забравшийся на вершину. Том 8

Физрук: назад в СССР

Гуров Валерий Александрович
1. Физрук
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Физрук: назад в СССР

Темный Патриарх Светлого Рода 6

Лисицин Евгений
6. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 6

Энфис 5

Кронос Александр
5. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 5

Хочу тебя навсегда

Джокер Ольга
2. Люби меня
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Хочу тебя навсегда

Я все еще не князь. Книга XV

Дрейк Сириус
15. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я все еще не князь. Книга XV

Волк 5: Лихие 90-е

Киров Никита
5. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк 5: Лихие 90-е

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Ученик

Первухин Андрей Евгеньевич
1. Ученик
Фантастика:
фэнтези
6.20
рейтинг книги
Ученик

Не грози Дубровскому! Том IX

Панарин Антон
9. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том IX