Часть четвертую я слушал необычайно долго (по сравнению с предыдущей) и вроде бы уже точно определился в части необходимости «взять перерыв», однако... все же с успехом дослушал ее до конца. И не то что бы «все надоело вконец», просто слегка назрела необходимость «смены жанра», да а тов.Родин все по прежнему курсант и... вроде (несмотря ни на что) ничего (в плане локации происходящего) совсем не меняется...
Как и в частях предыдущих —
подробнее ...
разрыв (конец части третьей и начало части четверной) был посвящен очередному ЧП и (разумеется, кто бы мог подумать)) очередному конфликту с новым начальственным мразматиком в погонах)). Далее еще один (почти уже стандартный) конфликт на пустом месте (с кучей гопников) и дикая куча проблем (по прошествии))
Удивила разве что встреча с «перевоспитавшейся мразью» (в роли сантехника) и вся комичность ситуации «а ля любовник в ванной»)) В остальном же вроде все как всегда, но... ближе к середине все же наступили «долгожданные госы» и выпуск из летного училища... Далее долгие взаимные уговоры (нашего героя) выбрать «место потеплее», но он (разумеется) воспрининял все буквально и решил «сунуться в самое пекло».
Данный выбор хоть и бы сделан «до трагедии» (не буду спойлерить), но (ради справедливости стоит сказать, что) приходится весьма к месту... Новая «локация», новые знакомые (включая начальство) и куча работы (вольно, невольно помогающяя «забыть утрату»). Ну «и на закуску» очередная (почти идиотская) ситуация в которой сам же ГГ (хоть и косвенно, но) виноват (и опять нажравшись с трудом пытается вспомнить происходящее). А неспособность все внятно (и резко) проъяснить сразу — мгновенно помогает получить (на новом месте службы) репутацию «мразоты» и лишь некий намек (на новый роман) несколько скрашивает суровые будни «новоиспеченного лейтенанта».
В конце данной части (как ни странно) никакого происшествия все же нет... поскольку автор (на этот раз) все же решил поделиться некой «весьма радостной» (но весьма ожидаемой) вестью (о передислокации полка, в самое «пекло мира»)).
Часть третья продолжает «уже полюбившийся сериал» в прежней локации «казармы и учебка». Вдумчивого читателя ожидают новые будни «замыленных курсантов», новые интриги сослуживцев и начальства и... новые загадки «прошлого за семью печатями» …
Нет, конечно и во всех предыдущих частях ГГ частенько (и весьма нудно) вспоминал («к месту и без») некую тайну связанную с родственниками своего реципиента». Все это (на мой субъективный взгляд)
подробнее ...
несколько мешало общему ходу повествования, но поскольку (все же) носило весьма эпизодический характер — я собственно даже на заморачивался по данному поводу....
Однако автор (на сей раз) все же не стал «тянуть кота за подробности» и разрешил все эти «невнятные подозрения и домыслы» в некой (пусть и весьма неожиданной) почти шпионской интриге)) Кстати — данный эпизод очень напомнил цикл Сигалаева «Фатальное колесо»... но к чести автора (он все же) продолжил основную тему и не ушел «в никуда».
Далее — «небрежно раздавленная бабочка Бредберри» и рухнувший рейс. Все остальное уже весьма стандартно (хоть и весьма интересно): новые залеты, интриги и особенности взаимоотношения полов «в условиях отсутствия увольнений» и... встреча «новых» и «бывших» подруг ГГ (по принципу «то ничего и пусто, то все не вовремя и густо»)) Плюсом идет «встреча с современником героя» (что понятно сразу, хоть это и подается как-то, как весьма незначительный факт) и свадьма в стиле «колхоз-интертеймент представляет» и «...ах, эта свадьба пела и плясала-а-а-а...» (в стиле тов.П.Барчука см.«Колхоз»)).
Концовка (как в прочем и начало книги) «очередное ЧП» (в небе или не земле). И ведь знаю что что-то обязательно будет... И вроде уже появилось желание «пойти немного отдохнуть» после части третьей... Ан нет!)) Автор самым циничным образом «все же заставил» поставить следующую часть (я то все слушаю в формате аудио) на прослушку. Так что слушаем дальше (благо пока есть «что поесть»))
Trunc(FileSize(f1)); //узнаем размер файла
//Отображаем размер файл для пользователя}
Label4.Caption:= IntToStr(sizez div 1024) + 'Кб’;
{Создаем второй файл или перезаписываем его, если он уже существует}
Rewrite(f2);
while not Eof(f1) do begin //пока не достигнут конец первого файла
//считываем один байт с первого файла
BlockRead(f1, cop, 1);
//записываем один байт во второй файл
BlockWrite(f2, cop, 1);
end;
CloseFile(f1);//закрываем первый файл
CloseFile(f2);// закрываем второй файл
finally;
end;
if IOResult <> 0 //Если возникла ошибка ввода-вывода
then MessageDlg('Ошибка при копировании файла!', mtError, [mbOk] , 0) //сообщение об ошибке
else begin
{если ошибок не было, то выводим окно об успешном окончании копирования}
ShowMessage('Успешно скопировано!');
end;
end;
procedure TForm1.ButtonlClick(Sender: TObject);
begin
doit;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Open1.Execute then from.Text := Open1.FileName
else ShowMessage('Файл не был открыт');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if Save1.Execute then where.Text:= Save1.FileName
else ShowMessage(''Вы не выбрали место для сохранения файла!');
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
doit;
DeleteFile(from.Text); //удаляем исходный файл
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if Open1.Execute then del.Text:= Open1.FileName
else ShowMessage('Файл не был выбран');
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
DeleteFile(del.Text); //удаляем файл
if not FileExists(del.Text)
then //проверяем существование файла
//выводим сообщение об успешном удалении
ShowMessage('Файл удален!');
end;
end.
⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter_02.
Глава 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
Последние комментарии
19 часов 5 минут назад
21 часов 9 минут назад
1 день 18 часов назад
1 день 18 часов назад
2 дней 17 минут назад
2 дней 4 часов назад