Программирование на delphi 7 для начинающих: Страница не найдена

Основы программирования в Delphi 7. 2-е изд.

Культин Никита Борисович

Артикул1544
ISBN 978-5-9775-0310-5
Количество страниц 640
Формат издания 170 x 240 мм
Печать Черно-белая
Серия Самоучитель

486 ₽
413 ₽

# Express# InstallShield#Access#Delphi

  • Описание
  • Детали
  • Отзывы (0)

Описание

Книга является руководством по программированию в среде Delphi 7. Описывается весь процесс разработки программы: от создания диалогового окна до организации справочной системы и создания установочного компакт-диска. Материал включает ряд тем, которые, как правило, остаются за рамками книг, адресованных начинающим – обработка символьной информации, использование динамических структур, работа с файлами. Рассматриваются вопросы программирования графики, мультимедиа и работа с базами данных. Приведено описание процесса создания справочной системы при помощи программы Microsoft HTML Help Workshop, установочного компакт-диска в InstallShield Express. Книга отличается доступностью изложения, большим количеством наглядных примеров. Во втором издании обновлены примеры и описана работа с базами данных Access на основе ADO. Прилагаемый компакт-диск содержит проекты, приведенные в книге….

 

Детали

Артикул1544
ISBN978-5-9775-0310-5
Количество страниц640
Серия Самоучитель
ПереплетМягкая обложка
Печать Черно-белая
Год2009
Габариты, мм240 × 170 × 30
Вес, кг0. 717

Дополнительные файлы скачать: Зеркало1Дополнительные файлы скачать (Chrome): Зеркало2

  • Новинки на 2 недели раньше магазинов
  • Цены от издательства ниже до 30%
  • Акции и скидки только для подписчиков
  • Важные новости БХВ

ПОЛЕЗНАЯ РАССЫЛКА КНИЖНЫХ НОВОСТЕЙ

Подписываясь на рассылку, вы соглашаетесь с политикой конфиденциальности и обработкой своих персональных данных.

Рекомендуем также

  •  

    Delphi в задачах и примерах. 2-е изд. – Бумажная книга

    324₽

  •  

    Программирование в Turbo Pascal 7.0 и Delphi: 3-е изд. – Бумажная книга

    325₽

  •  

    Delphi на примерах – Бумажная книга

    201₽

  •  Фленов Михаил Евгеньевич

    Библия Delphi. 3-е изд.

    695 ₽
    591 ₽

  •  

    Программирование в Delphi для начинающих – Бумажная книга

    549₽

Изучаем Delphi — О программировании и о Дельфи

Начнем наше ознакомление с программированием в среде Delphi с таких вопросов, как суть собственно программирования, его основы и подвиды. Также мы рассмотрим, что представляет собой среда Delphi, чем она отличается от других, и какой путь был ей пройден с момента появления 10 лет назад.

Что такое программирование

Итак, прежде всего, уясним для себя, что же понимают под термином программирования? Сейчас многие называют себя программистами, не зная даже о том, что это такое: на проверку оказывается, что человек, изменивший пару строк кода в HTML-документе уже готов считать себя программистом. Но на самом деле, работая с HTML (именно с самим HTML), стать программистом нельзя, поскольку HTML, что явствует из названия (Hypertext Markup Language — язык разметки гипертекста), языком программирования не является.

В результате мы имеем первое условие: для изучения программирования нужен какой-либо язык программирования. В нашем случае это будет язык Object Pascal последних версий (14.0 или 15.0).

Далее, допустим кто-то, называющий себя программистом, не только правил пару строк кода HTML, но и видел Delphi, и даже нарисовал в нем форму с 2-3 кнопками и текстовым полем. Это ли программист? Скорее всего, тоже нет. Дело в том, что под визуальной оболочкой, на самом деле, скрывается сложнейший механизм, обеспечивающий взаимодействия элементов управления (тех же кнопок) с пользователем и операционной системой — с одной стороны, и позволяющий выполнять практически любые вычислительные действия — с другой. При всем этом следует уметь делать главное — составлять алгоритмы поведения программы — будь то ее реакция на нажатие той или иной кнопки, или создание функции для решения сложного математического уравнения.

Так вот, программирование в, своем современном понятии, включает в себя знание принципов работы операционной системы, взаимодействия ее компонентов и внутреннего устройства. Ну и при этом сохраняется классическое определение программирования, а именно — умение составлять алгоритмы, математические и поведения программы. Все это реализуется в контексте какого-либо языка программирования, например, того же Object Pascal из Delphi.

Что такое Delphi

Теперь мы знаем, что программирование — есть составление алгоритмов плюс использование языка программирования. Но если изучаемым нами языком является Object Pascal, то что такое Delphi? Ответ таков: Delphi — это RAD, или Rapid Application Development — среда быстрой разработки приложений. Иначе говоря, Delphi включает в себя не только все средства для работы с языком Object Pascal (тем более, что начиная с версии, 2005 в Delphi имеется поддержка других языков программирования, в частности, C#), но и ряд дополнительных средств, призванных максимально ускорить и упростить создание программ. К таковым средствам относятся, прежде всего, визуальный редактор форм, при помощи которого за считанные минуты и без лишних усилий можно создать полноценно выглядящую программу, а так же прочие составные части визуальной составляющей разработки программ.

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

Вкупе с развитыми средствами для написания и отладки кода — специализированным текстовым редактором, оптимизирующим компилятором и отладчиком, Delphi являет собой средство быстрой разработки приложений. При этом основой Delphi для конечного пользователя является IDE — Integrated Development Environment (интегрированная среда разработки), которая объединяет в себе редактор кода и средства визуальной разработки, а также связывает это с компилятором, средствами разработки баз данных и прочими составными частями Delphi.

Delphi и другие

Разумеется, Delphi — не единственная среда быстрой разработки приложений. Существуют и другие RAD, столь же удобные для визуальной разработки программ, например, Visual Basic. Но BASIC известен как не самый мощный и удобный язык программирования, кроме того, программы на нем отличаются сравнительно невысоким быстродействием.

Вместе с тем, имеются и не менее мощные, по сравнению с Object Pascal, языки программирования, имеющие свои RAD — прежде всего, это язык C++ вместе с таким наиболее известными средствами разработки, как Visual C++ и C++ Builder. Однако C++ не в лучшую сторону отличается от Object Pascal с точки зрения простоты изучения. Кроме того, сборка и отладка программ на C++ происходит сравнительно медленно, хотя готовые программы выполняются так же быстро, как и созданные при помощи Delphi.

ПРИМЕЧАНИЕ

Отметим, что в момент своего появления в 1995 году, Delphi была действительно уникальной средой, объединяющей в себе визуальное программирование с оптимизирующим компилятором и средствами для работы с базами данных.

В результате мы получаем практически идеальный продукт для быстрой разработки программ: с одной стороны простота и удобство, сравнимые с Visual Basic, а с другой — мощь, скорость и гибкость, характерные для C++.

Здесь следует отметить, что используемый в Delphi язык Object Pascal имеет мало общего со своим прародителем — языком программирования Pascal, который, возможно, вы изучали в школе или в ВУЗе. Прежде всего, в Delphi применяется чистая объектно-ориентированная модель программирования, в то время как Pascal был обычным процедурным языком. В чем же суть отличий процедурного программирования от объектно-ориентированного? Вот этот вопрос мы и обсудим в следующих двух параграфах.

Процедурное программирование и алгоритмы

Практически все современные языки программирования являются процедурными по своей сути. Это означает, что каждая программа состоит из набора процедур, каждая из которых решает ту или иную задачу, при этом одна процедура может вызывать любую другую, в том числе и саму себя (последнее, т.е. вызов процедурой самой себя, называется рекурсией). Собственно программа составляется на основе алгоритмов, причем достаточно всего трех их разновидностей — выбора (развилки), повтора (цикла) и перехода. Впрочем, последний тип на практике практически не используется ввиду своей дурной репутации (речь о GOTO — некогда любимом, от безысходности, операторе BASIC -программистов).

Давайте рассмотрим простейший алгоритм — для игры «угадай число». Логика его работы состоит в том, что требуется проверить, является ли число большим или меньшим, чем загаданное, и если это так, ты вывести соответствующую подсказку, а если оно не больше и не меньше (т. е. совпадает) — то игра заканчивается. Блок-схема такого алгоритма будет состоять из 2 ветвлений (рис. 1.1).



Рис. 1.1. Блок-схема простого алгоритма

Первым делом здесь у пользователя запрашивается число A, которое дважды сравнивается с предварительно заданным числом B. Сначала проверяется, не является ли число A больше, чем B, и если да, то программа сообщает, что произошел «перелет», и возвращается на точку ввода числа. Если число не больше, то происходит второе сравнение — на то, не является ли A меньше B. Если это так, то выводится сообщение о том, что число меньше («недолет») и, опять-таки, происходит возвращение к началу. Но если число A не меньше числа B, то, учитывая тот факт, что на данный момент уже известно, что оно и не больше, следовательно, оно равно числу B, и программа завершает свою работу. При этом она может вывести поздравление пользователя с тем, что он угадал число.

Данный алгоритм может быть частью другого алгоритма. Например, здесь не предусмотрена генерация самого числа, которое следует отгадать. Так же отсутствует возможность повторной игры. Чтобы исправить эту ситуацию, рассмотрим блок-схему алгоритма, управляющего выполнением программы в целом (рис. 1.2).



Рис. 1.2. Блок-схема управления программой

В начале выполнения генерируется новое число, которое будет отгадывать пользователь. Затем идет собственно блок угадывания, уже рассмотренный нами (см. рис. 1.1), — здесь он представлен в виде одного простого модуля, поскольку на ход выполнения программы в целом не влияет. По завершению этого блока мы имеем единственное ветвление — в зависимости от того, что ответит пользователь на предложение повторить игру. Так, если ответ будет положительным, то программа должна будет перейти к началу, т.е. к генерации нового числа. Если же пользователь отказывается, то работа программы должна быть завершена.

Конкретная реализация того или иного алгоритма зависит от применяемого языка программирования, а так же от предпочтений создателя программы, поскольку, как правило, одну и ту же конструкцию можно решить, используя несколько различных методов. Например, для возврата к какой-либо точке, обозначенной на блок-схеме, можно использовать как циклы, так и операторы безусловного перехода. Ну а сами блоки могут выноситься в отдельные процедуры и вызываться в качестве подпрограмм. Единственной общей чертой является условный оператор, отвечающий за развилку — практически во всех языках, и Pascal тут не исключение, он называется IF. Впрочем, с операторами Object Pascal мы еще успеем ознакомиться.

Об объектно-ориентированном программировании

Если выбор, повтор и переход — краеугольные основы любого процедурного языка программирования, то для объектно-ориентированного программирования важны такие понятия, как инкапсуляция, наследование и полиморфизм. Рассмотрим эти понятия, без которых ни один поддерживающий объекты язык не может называться объектно-ориентированным, подробнее.

ПРИМЕЧАНИЕ

Под термином «объект» в программировании понимают некий сложный тип данных, к которому могут быть привязаны уникальные для данного типа свойства, а в случае ООП — также и методы.

Инкапсуляция представляет собой объединение данных и обрабатывающих их подпрограмм — методов — внутри одного объекта, называемого в ООП «классом». Это означает, что в классе инкапсулируется все необходимое для работы с тем или иным объектом.

Наследование — это еще одна важная составная часть ООП. Под наследованием понимают возможность создания типа (объекта), базирующегося на определении другого объекта. При этом все свойства и методы родительского объекта, могут быть унаследованы потомком. К примеру, если у нас есть объект «машина», то на его основе можно создать другой объект, скажем, «трамвай», который унаследует все его свойства, и получит вдобавок к ним какие-либо собственные. В свою очередь, этот объект так же сможет иметь своих потомков, и т.д. В результате образуется дерево объектов, называемое иерархией классов.

В Object Pascal все классы происходят от единого предка — класса TObject, который реализует такие общие для всех классов действия над объектом, как создание и удаление.

СОВЕТ

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

Наконец, третий кит, на котором стоит ООП — это полиморфизм, или возможность создавать в рамках родственных объектов одноименные свойства и методы, которые будут отличаться по своей сути. Скажем, у нас уже есть классы «машина» и «трамвай», и для обоих определено свойство «мотор», но если для машины тип мотора будет объектом одного типа, то для трамвая — совсем другого.

Еще одна важная составная деталь, характерная для ООП — это скрытие, которое позволяет делать невидимым ряд свойств объектов. Иными словами, если у нас может быть определен объект типа «машина», для которого, в свою очередь, определены такие свойства, как шасси, мотор и колеса. Так вот, если мотор и колеса, можно сделать видимыми (и доступными) повсеместно, где только доступен сам класс «машина», то шасси — нет. Соответственно доступ к такому свойству можно будет получить только в тех частях программы, в которых производится описание самого объекта «машина». Такие свойства называют защищенными.

Подробнее об объектно-ориентированном программировании будет рассказано во второй части настоящего издания.

Визуальное программирование и Delphi

Итак, Delphi являет собой среду, работающую с объектно-ориентированным структурным языком программирования Object Pascal. В дополнение к этому, Delphi является еще и средой визуальной разработки. Иначе говоря, уже в процессе создания программы видно, как она будет выглядеть во время выполнения. Визуальное программирование в разы сокращает время, необходимое на создание пользовательского интерфейса для приложений Windows. До появления визуальных средств разработки, программирование под Windows было сопряжено с большими трудностями, поскольку требовалось практически вслепую вычислять расположение каждого элемента управления в окне приложения, что приводило к множеству ошибок (рис. 1.3).



Рис. 1.3. Классический и визуальный подходы к созданию интерфейса

То, что Delphi является визуальной средой разработки, наносит свой отпечаток и на язык программирования. В частности, в нем предусмотрены специальные средства для того, чтобы определенные свойства классов могли быть доступны уже на этапе разработки программы, а не только во время выполнения. Но самой важной частью всего этого великолепия является библиотека классов — VCL (Visual Component Library). Именно VCL скрывает все острые углы внутренностей Windows, и позволяет легко создавать приложения, не вступая в затяжную войну с обработкой системных сообщений, обратных вызовов, дескрипторов и указателей.

При всем этом, разумеется, никто не запрещает вам при надобности использовать функции Windows напрямую, в обход VCL. Впрочем, такое может понадобиться весьма нечасто, поэтому для начинающего программиста на Delphi, для написания Windows-приложений ничего, кроме VCL, не требуется.

Визуальные компоненты мы детально рассмотрим в 3-й части этой книги.

Версии Delphi и их отличия

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

Delphi 1. Вышедший незадолго до появления Windows 95, Delphi 1.0 был первым инструментом разработки приложений Windows (3.1), объединившим в себе оптимизирующий компилятор, визуальную среду разработки и мощные средства для работы с базами данных. Для языка Pascal это стало настоящим перевоплощением — он стал Object Pascal.

Delphi 2. Вышедшая через год 2-я версия Delphi предлагала все то же, но уже для 32-разряных версий Windows (95/NT), опять-таки став первым средством, сочетающим 32-битный компилятор, средства для работы с БД и визуальную среду разработки, поддерживающую OLE (а после выхода обновленной Delphi 2.01 — и ActiveX). Язык так же изменился, став ориентированным на 32-разрядное применение.

Delphi 3. Дальнейшее совершенствование Delphi по всем направлениям привело к выходу 3-й версии, имевшей расширенный набор инструментов для создания приложений благодаря поддержке COM и ActiveX. В этой версии также впервые был сделан акцент на возможности создания приложений для Интернета, а так же появился нетипизированный тип данных — variant.

Delphi 4. Еще одна ключевая веха развития. В этой версии было введено много нового и полезного для упрощения разработки приложений, включая новую среду с динамическими подсказками и т.д. Была усовершенствована модель работы с компонентами (VCL), появилась возможность быстрого использования таких технологий, как MIDAS, DCOM и CORBA. В этой версии так же был усовершенствован язык Object Pascal: появились новые черты, свойственные современному ООП, были введены новые типы данных, включая 64-битные.

Delphi 5. Изменений в Delphi 4 было так много, что, к сожалению, не обошлось без досадных накладок и ошибок. Результатом был выпуск 3-х пакетов обновлений (наши пираты продавали их под вывесками Delphi 4.1, 4.2 и 4.3). Но самым полным и правильным пакетом обновлений следует считать Delphi 5 — в этой версии было доведено до ума все то, что было начато в Delphi 4.

Delphi 6. С выходом шестой версии Borland провозгласила новую, кросс-платформенную эпоху в Delphi, параллельно выпустив версию Delphi для ОС Linux (Kylix 1.0). Теперь при создании приложения можно было выбирать его тип — для Windows, или же универсальное. Соответственно, к библиотеке VCL добавилась библиотека CLX, совместимая как с Windows, так и с Linux. Кроме того, в 6-й версии наконец-то появились «родные», а не чужеродные ActiveX, компоненты для работы с Интернетом, причем сразу в обоих вариантах — и для VCL и для CLX. Начиная с этой версии, сам язык программирования Object Pascal официально называется Delphi.

Delphi 7. Дальнейшее развитие Delphi 6, улучшенная библиотека CLX и новая корреспондирующая версия среды разработки под ОС Linux — Kylix 3. Вместе с тем, начиная с Delphi 7, Borland озаботилась вопросом совместимости с еще одной платформой — Microsoft .NET, для чего некоторые изменения были внесены как в VCL, так и в язык (и, соответственно, в компилятор).

Delphi 8. Первая версия Delphi, ориентированная на работу с платформой Microsoft.NET. В этой версии разработчики рискнули изменить интерфейс среды, сделав его похожим на продукцию Microsoft — нового крупного акционера Borland. Поддержка, соответственно, была Kylix прекращена.

Delphi 2005. Менее чем через год после выхода Delphi 8, появилась новая версия, в которой спешно вернули возможность работать в классическом стиле IDE при разработке приложений для Windows. Вместе с тем, Delphi 2005, в случае разработки приложений специально для платформы NET, позволяет работать не только с языком Delphi, но и с C#. При этом в сам язык Delphi были введены такие новшества, как оператор for…in и встраиваемые процедуры и функции.

Delphi 2006. Последняя версия Дельфи, выпущенная фирмой Borland. Так же была выпущена облегченная версия — Turbo Delphi. Дальше началось странствие по другим разработчикам.

Delphi 2007. Версия, выпущенная CodeGear. Добавлена поддержка интерфейса Aero для Windows Vista.

Delphi 2009. Версия, выпущенная Embarcodero. Реализована поддержка Unicode в VCL и RTL, заменены обращения ко всем функциям Windows API на аналоги в Unicode, добавлены обобщенные типы и анонимные методы.

Delphi 2010. Поддержка Windows 7, компоненты для работы с касаниями и жестами, компоненты dbExpress теперь официально поддерживает Firebird.

Delphi XE (Delphi 2011). Добавлена поддержка для облачных вычислений.

« Предисловие к электронной редакции
|
Среда Delphi и простейшее приложение »

Delphi 7 и его IDE :: Часть I: Основы :: Освоение Delphi 7 :: Программирование :: eTutorials.org

  1. Домашняя страница
  2. Программирование
  3. Освоение Delphi 7

В визуальном инструменте программирования, таком как Delphi, роль интегрированной среды разработки (IDE) иногда даже важнее, чем язык программирования. Delphi 7 предоставляет несколько интересных новых функций поверх многофункциональной IDE Delphi 6. В этой главе рассматриваются эти новые функции, а также функции, добавленные в другие последние версии Delphi. Мы также обсудим несколько традиционных возможностей Delphi, которые малоизвестны или очевидны для новичков. Эта глава не является полным учебным пособием по среде IDE, которое заняло бы слишком много места; это прежде всего набор советов и предложений, предназначенных для среднего пользователя Delphi.

Если вы начинающий программист, не бойтесь. Delphi IDE интуитивно понятна в использовании. Delphi включает в себя руководство (доступно в формате Acrobat на компакт-диске Delphi Companion Tools) с учебным пособием, которое знакомит с разработкой приложений Delphi. Вы можете найти более простое введение в Delphi и его IDE в моей онлайн-книге Essential Delphi (обсуждается в Приложении C, «Бесплатные сопутствующие книги по Delphi»). На протяжении всей этой книги я буду предполагать, что вы уже знаете, как выполнять основные практические операции в среде IDE; все главы после этой посвящены вопросам и методам программирования.


Включите JavaScript для просмотра комментариев с помощью Disqus.

Задняя крышка

9002 4

Освоение Delphi 7
Введение
Часть I: Фундаменты
Глава 1: Delphi 7 и его IDE 0024 Выпуски Delphi
Обзор среды IDE

9002 4

Редактор Delphi
Дизайнер форм
Секреты палитры компонентов
Управление проектами
90 028

Дополнительные и внешние инструменты Delphi
Файлы, создаваемые системой
9 0022

Репозиторий объектов
Обновления отладчика в Delphi 7
Что дальше?
Глава 2: Язык программирования Delphi
90 024
Глава 3. Библиотека времени выполнения
Глава 4. Классы базовой библиотеки
Глава 5: Визуальные элементы управления
Глава 6. Создание пользовательского интерфейса
Глава 7. Работа с формами
Часть III: Архитектуры Delphi, ориентированные на базы данных
Часть IV: Delphi, Интернет и предварительная версия .NET
8
Приложение B. Дополнительные инструменты Delphi из других источников 0024 Приложение C: Бесплатные сопутствующие книги по Delphi
Список рисунков
Список таблиц

9002 4 Список объявлений

Список боковых панелей

Ускоренный курс Del phi, часть 1: Компиляция проекта

Delphi сочетает в себе
удобство использования Visual Basic с точным контролем и
скорость С++. Без большого количества «настоящего» программирования вы можете разработать
очень эффективные и быстрые приложения для Windows.

Delphi — это инструмент RAD , приложение R apid A .
D разработка. Это уменьшает сложную задачу
программирование приложений Windows для обработки «объектов» в
визуальное окружение.

Ввод исходного кода ограничен строгим минимумом. Как
В результате вы можете полностью сконцентрироваться на том, что должна делать программа:
это нисходящее программирование на высшем уровне, проектирование
приятный интерфейс Windows GUI становится проще простого. Вам не нужно
«запрограммировать» любые стандартные элементы Windows всего в несколько кликов мышью
и вот ваш полностью функциональный список , файл
диалоговое окно
или даже полноценная сетка базы данных .

В Delphi отладка ограничена строками программы, которые
вы вошли сами, потому что все готовые модули, которые
которые вы используете, проверены и готовы к работе.

По сравнению с ограниченными возможностями Visual Basic или
сложность C++, Delphi действительно освежает. Как только вы использовали
Delphi, вы будете очарованы его скоростью разработки.

Для начала несколько общих моментов об этом руководстве по Delphi:

Будет ли он работать с Delphi Professional Rio или Delphi?
2007
или …? Все уроки написаны для Delphi.
Издание сообщества 10.3
(2018 г.). Они 100%
совместим со всеми более высокими версиями, и даже с
самые старые издания.
VCL, IDE, ООП…? Для того, чтобы поднять вас до
скорость быстро на аббревиатуры , в одном из первых
уроки нашего второго урока, мы будем делать программу Акрон .

Для особо нетерпеливых: exe-файл Акрон может
можно найти в загрузках
раздел как ACRONX.ZIP. Также скачайте ACRODAT4.ZIP: это
содержит список сокращений. Этот список будет расти. Каждый
новая и расширенная версия получит более высокий номер (да,
следующим будет ACRODAT5.ZIP, а потом…, и
скоро).

Бежать раньше, чем ходить? Да, это возможно
с Делфи. Не нужно начинать изучать старый Turbo
Паскаль, не нужно ничего знать о ООП (Объект
ориентированное программирование). Просто учитесь на практике, и
мы заполним пробелы позже.

Итак, в нашем туториале нет традиционной программы «Hello, World».
Мы начнем сразу с реальное приложение .
В конце концов, пришло время R.A.D — вперед!

Препараты

  1. Если вы еще этого не сделали, создайте новую папку
    («каталог», как говорили в старину) \DelphiLand
    на вашем жестком диске.
  2. Если вы еще этого не сделали, создайте каталог фут2 метр
    «под» \DelphiLand.
  3. Далее, если вы используете Delphi :
    Загрузите foot2meter.zip (исходный код Delphi для
    первый готовый проект) из Скачиваний
    раздел и распакуйте его в этот каталог. При проверке с
    Проводник Windows, вы должны увидеть файлы foot2meter.

    Imacros | Все права защищены © 2021