Borland delphi 4 0 для начинающих повторное использование приложений


Содержание

Borland delphi 4 0 для начинающих повторное использование приложений

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

Hадо отметить, что к моменту выхода продукта обстановка вокруг компании Borland складывалась не лучшим для нее образом. Поговаривали о возможной перепродаже компании, курс акций компании неудержимо катился вниз. Сейчас уже можно без всяких сомнений утверждать, что период трудностей позади. Hеверно, конечно, было бы говорить, что только Delphi явился причиной восстановления компании; кроме Delphi, у Borland появились и другие замечательные продукты, так же, как и Delphi, основывающиеся на новых, появившихся недавно у компании Borland, технологиях. Я имею в виду новые BDE 2.0, BC++ 4.5, Paradox for Windows 5.0, dBase for Windows 5.0, BC++ 2.0 for OS/2.

Тем не менее, именно Delphi стал тем продуктом, на примере которого стало ясно, что у Borland есть еще порох в пороховницах, и что один единственный продукт может настолько удачно сочетать несколько передовых технологий.

Delphi. Основные характеристики продукта.

Delphi — это комбинация нескольких важнейших технологий:

  • Высокопроизводительный компилятор в машинный код
  • Объектно-ориентированная модель компонент
  • Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов
  • Масштабируемые средства для построения баз данных

Компилятор в машинный код

Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений в архитектуре «клиент-сервер». Этот компилятор в настоящее время является самым быстрым в мире, его скорость компиляции составляет свыше 120 тысяч строк в минуту на компьютере 486DX33. Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения (4GL) и в то же время обеспечивает качество кода, характерного для компилятора 3GL. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на Си или ручного написания кода (хотя это возможно).

В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы — после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10-20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь, в Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения.

Объектно-ориентированная модель программных компонент

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

В стандартную поставку Delphi входят основные объекты, которые образуют удачно подобранную иерархию из 270 базовых классов. Для начала — неплохо. Но если возникнет необходимость в решении какой-то специфической проблемы на Delphi, советуем, прежде чем попытаться начинать решать проблему «с нуля», просмотреть список свободно распространяемых или коммерческих компонент, разработанных третьими фирмами, количество этих фирм в настоящее время превышает число 250, хотя, возможно, я не обо всех знаю. Скептики, возможно, не поверят мне, когда я скажу, что на Delphi можно одинаково хорошо писать как приложения к корпоративным базам данных, так и, к примеру, игровые программы. Тем не менее, это так. Во многом это объясняется тем, что традиционно в среде Windows было достаточно сложно реализовывать пользовательский интерфейс. Событийная модель в Windows всегда была сложна для понимания и отладки. Но именно разработка интерфейса в Delphi является самой простой задачей для программиста.

Быстрая разработка работающего приложения из прототипов

Игровая программа Rendzu была собрана моим коллегой из готовых кусков за рабочий день, причем большая часть времени была посвящена прихорашиванию и приукрашиванию. Screen Saver в виде прыгающих часиков был также изготовлен на Delphi за весьма незначительное время. Теперь эти часики украшают почти каждую IBM-совместимую машину в нашем Демо-центре клиент-серверных технологий. Конечно, на разработку серьезной информационно-поисковой системы в архитектуре клиент-сервер может уйти гораздо большее время, чем на разработку программы-игрушки. Тем не менее многие наши коллеги, до Delphi программировавшие на других языках, утверждают, что на Delphi скорость изготовления сложного проекта выше раз в 10.

Cреда Delphi включает в себя полный набор визуальных инструментов для скоростной разработки приложений (RAD — rap >Соответствующий стандарт компонент назывался VBX. И этот стандарт так же поддерживается в Delphi. Однако, визуальные компоненты в Delphi обладают большей гибкостью. Вспомним, в чем была проблема в VB. Прикладной программист программировал, вообще говоря, в среде языка бэйсик. А компоненты в стандарте VBX готовили ему его коллеги-профессионалы на С++.

VBX’ы приходили, «как есть», и ни исправить, ни добавить ничего было нельзя.

А для изготовления VBX надо было осваивать «кухню» языка C++. В Delphi визуальные компоненты пишутся на объектном паскале, на том же паскале, на котором пишется алгоритмическая часть приложения. И визуальные компоненты Delphi получаются открытыми для надстройки и переписывания. Чувствуете разницу?

Масштабируемые средства для построения баз данных

Объекты БД в Delphi основаны на SQL и включают в себя полную мощь Borland Database Engine. В состав Delphi также включен Borland SQL Link, поэтому доступ к СУБД Oracle, Sybase, Informix и InterBase происходит с высокой эффективностью. Кроме того, Delphi включает в себя локальный сервер Interbase для того, чтобы можно было разработать расширяемые на любые внешние SQL-сервера приложения в офлайновом режиме. Разработчик в среде Delphi, проектирующий информационную систему для локальной машины (к примеру, небольшую систему учета медицинских карточек для одного компьютера), может использовать для хранения информации файлы формата .dbf (как в dBase или Clipper) или .db (Paradox). Если же он будет использовать локальный InterBase for Windows 4.0 (это локальный SQL-сервер, входящий в поставку), то его приложение безо всяких изменений будет работать и в составе большой системы с архитектурой клиент-сервер.

Вот она — масштабируемость на практике — одно и то же приложение можно использовать как для локального, так и для более серьезного клиент-серверного вариантов.

Delphi — два варианта поставки

Я уже упомянул о технологиях, которые объединяет Delphi. Теперь можно перейти к описанию собственно продукта. Что лежит внутри в коробке, и чем может воспользоваться программист при разработке прикладной системы? Выпущены две версии Delphi — одна (Delphi Client-Server) адресована для разработчиков приложений в архитектуре «клиент-сервер», а другая (Delphi for Windows) предназначена для остальных программистов. Приложения, разработанные при помощи Delphi, можно использовать без выплаты royalty-процентов и без оплаты runtime- лицензий.

Клиент-серверная версия Delphi

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

Клиент-серверная версия включает в себя следующие особенности:

  • SQL Links: специально написанные драйвера для доступа к Oracle, Sybase, Informix, InterBase
  • Локальный сервер InterBase: SQL-сервер для Windows 3.1. СУБД для разработки в корпоративных приложений на компьютере, не подключенном к локальной сети.
  • ReportSmith Client/server Edition: генератор отчетов для SQL-серверов
  • Team Development Support: предоставляет версионный контроль при помощи PVCS компании Intersolve (приобретается отдельно) или при помощи других программны х продуктов версионного контроля
  • Visual Query Builder — это средство визуального построения SQL-запросов
  • лицензия на право распространения приложений в архитектуре клиент-сервер, изготовленных при помощи Delphi
  • исходные тексты всех визуальных компонент

Delphi for Windows

Delphi for Windows представляет из себя подмножество Delphi Client-Server и предназначен для разработчиков высокопроизводительных персональных приложений, работающих с локальными СУБД типа dBase и Paradox.Delphi Desktop Edition предлагает такую же среду для быстрой разработки и первоклассный компилятор как и клиент-серверная версия (Client/Server Edition). Эта среда позволяет разработчику быстро изготавливать персональные приложения, работающие с персональными СУБД типа dBase и Paradox. Delphi позволяет также создавать разработчику DLL, которая может быть вызвана из Paradox, dBase, C++ или каких-нибудь других готовых программ.

В Delphi for Windows, как и в Delphi Client-Server, входят

  • компилятор Object Pascal (этот язык является расширением языка Borland Pascal 7.0)
  • генератор отчетов ReportSmith 2.5 (у которого, правда, отсутствует возможность работы с SQL-серверами)
  • среда визуального построителя приложений
  • библиотека визуальных компонент
  • Локальный сервер InterBase

RAD Pack for Delphi

В этом обзоре стоит упомянуть еще один продукт, выпущенный компанией Borland для Delphi. В RAD Pack for Delphi входит набор полезных дополнений, которые помогут разработчику при освоении и использовании Delphi. Это учебник по объектному паскалю, интерактивный отладчик самой последней версии, Borland Visual Solutions Pack (набор VBX для реализации редакторов, электронных таблиц, коммуникационные VBX, VBX с деловой графикой и т.п.), Resource WorkShop для работы с ресурсами Borland Pascal 7.0, а также дельфийский эксперт для преобразования ресурсов BP 7.0 в формы Delphi.

Для кого предназначен Delphi

В первую очередь Delphi предназначен для профессионалов-разработчиков корпоративных информационных систем. Может быть, здесь следует пояснить, что конкретно имеется в виду. Не секрет, что некоторые удачные продукты, предназначенные для скоростной разработки приложений (RAD — rap >Delphi такие ограничения не присущи. Хорошее доказательство тому — это тот факт, что сам Delphi разработан на Delphi. Можете делать выводы. Однако Delphi предназначен не только для программистов-профессионалов. Я читал в электронной конференции совершенно неожиданные для меня письма, где учителя, врачи, преподаватели ВУЗов, бизнесмены, все те, кто используют компьютер с чисто прикладной целью, рассказывали о том, что приобрели Delphi for Windows для того, чтобы быстро решить какие-то свои задачи, не привлекая для этого программистов со стороны. В большинстве случаев им это удается. Поразительный факт — журнал Visual Basic Magazine присудил свою премию Delphi for Windows.

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

Некоторые особенности Delphi

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

Team Development Support — средство поддержки разработки проекта в группе. Позволяет существенно облегчить управление крупными проектами. Это сделано в виде возможности подключения такого продукта как Intersolve PVCS 5.1 непосредственно к среде Delphi.

Высокопроизводительный компилятор в машинный код — в отличие от большинства Паскаль-компиляторов, транслирующих в p-код, в Delphi программный текст компилируется непосредственно в машинный код, в результате чего Delphi— приложения исполняются в 10-20 раз быстрее (особенно приложения, использующие математические функции). Готовое приложение может быть изготовлено либо в виде исполняемого модуля, либо в виде динамической библиотеки, которую можно использовать в приложениях, написанных на других языках программирования.

Открытая компонентная архитектура

Благодаря такой архитектуре приложения, изготовленные при помощи Delphi, работают надежно и устойчиво. Delphi поддерживает использование уже существующих объектов, включая DLL, написанные на С и С++, OLE сервера, VBX, объекты, созданные при помощи Delphi. Из готовых компонент работающие приложения собираются очень быстро. Кроме того, поскольку Delphi имеет полностью объектную ориентацию, разработчики могут создавать свои повторно используемые объекты для того, чтобы уменьшить затараты на разработку.

Delphi предлагает разработчикам — как в составе команды, так и индивидуальным — открытую архитектуру, позволяющую добавлять компоненты, где бы они ни были изготовлены, и оперировать этими вновь введенными компонентами в визуальном построителе. Разработчики могут добавлять CASE-инструменты, кодовые генераторы, а также авторские help’ы, доступные через меню Delphi.

Two-way tools — однозначное соответствие между визуальным проектированием и классическим написанием текста программы Это означает, что разработчик всегда может видеть код, соответствующий тому, что он построил при помощи визуальных инструментов и наоборот.

Визуальный построитель интерфейсов (Visual User-interface builder) дает возможность быстро создавать клиент-серверные приложения визуально, просто выбирая компоненты из соответствующей палитры.

Библиотека визуальных компонент

Эта библиотека объектов включает в себя стандартные объекты построения пользовательского интерфейса, объекты управления данными, графические объекты, объекты мультимедиа, диалоги и объекты управления файлами, управление DDE и OLE.

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

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

Поддержка OLE 2.0, DDE и VBX

Это очень важная особенность для разработчиков в среде Windows, поскольку в уже существующие Windows-приложения программист может интегрировать то, что разработает при помощи Delphi.

Delphi: настраиваемая cреда разработчика

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

Из этой палитры компонент вы можете выбирать компоненты, из которых можно строить приложения. Компоненты включают в себя как визуальные, так и логические компоненты. Такие вещи, как кнопки, поля редактирования — это визуальные компоненты; а таблицы, отчеты — это логические.

Понятно, что поскольку в Delphi вы визуальным образом строите свою программу, все эти компоненты имеют свое графическое представление в поле форм для того, чтобы можно было бы ими соответствующим образом оперировать. Но для работающей программы видимыми остаются только визуальные компоненты. Компоненты сгруппированы на страницах палитры по своим функциям. К примеру, компоненты, представляющие Windows «common dialogs» все размещены на странице палитры с названием «Dialogs».

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

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

Интеллектуальный редактор

Редактирование программ можно осуществлять, используя запись и исполнение макросов, работу с текстовыми блоками, настраиваемые комбинации клавиш и цветовое выделение строк .

Графический отладчик

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

Инспектор объектов

Этот инструмент представляет из себя отдельное окно, где вы можете в период проектирования программы устанавливать значения свойств и событий объектов (Properties & Events).

Менеджер проектов.

Дает возможность разработчику просмотреть все модули в соответствующем проекте и снабжает удобным механизмом для управления проектами.

Менеджер проектов показывает имена файлов, время/дату выбранных форм и пр.

Можно немедленно попась в текст или форму, просто щелкнув мышкой на соответствующее имя.

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

Дизайнер меню

Можно создавать меню, сохранить созданные в виде шаблонов и затем использовать в их в любом приложении.

Эксперты

Это набор инструментальных программ, облегчающих проектирование и настройку Ваших приложений.

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

Включает в себя:

  • Эксперт форм, работающих с базами данных
  • Эксперт стилей и шаблонов приложений
  • Эксперт шаблонов форм

В состав RAD Pack входит эксперт для преобразования ресурсов, изготовленных в Borland Pascal 7.0, в формы Delphi. Уже появились эксперты, облегчающие построение DLL и даже написание собственных экспертов

Интерактивная обучающая система

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

Компоненты доступа к базам данных и визуализации данных

Библиотека объектов содержит набор визуальных компонент, значительно упрощающих разработку приложений для СУБД с архитектурой клиент-сервер. Объекты инкапсулируют в себя нижний уровень — Borland Database Engine.

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

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

Разработка приложений БД

Delphi позволяет использовать библиотеку визуальных компонент для быстрого создания надежных приложений, которые легко расширяются до приложений с архитектурой клиент-сервер. Другими словами, Вы можете создать приложение, работающее с локальным сервером InterBase, а затем использовать созданное приложение, соединяясь с удаленным SQL-сервером через SQL-Links.

Библиотека объектных Визуальных Компонент

Компоненты, используемые при разработке в Delphi (и также собственно самим Delphi), встроены в среду разработки приложений и представляют из себя набор типов объектов, используемых в качестве фундамента при строительстве приложения.

Этот костяк называется Visual Component Library (VCL). В VCL есть такие стандартные элементы управления, как строки редактирования, статические элементы управления, строки редактирования со списками, списки объектов.

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

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

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

Здесь следует отметить, что обычных ограничений, присущих средам визуальной разработки, в Delphi нет. Сам Delphi написан при помощи Delphi, что говорит об отсутствии таких ограничений.

Илон Маск рекомендует:  Что такое код imap_headerinfo

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

Язык программирования Delphi базируется на Borland Object Pascal.

Кроме того, Delphi поддерживает такие низкоуровневые особенности, как подклассы элементов управления Windows, перекрытие цикла обработки сообщений Windows, использование встроенного ассемблера.

Формы, модули и метод разработки «Two-Way Tools»

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

Информация о формах хранится в двух типах файлов — .dfm и .pas, причем первый тип файла — двоичный — хранит образ формы и ее свойства, второй тип описывает функционирование обработчиков событий и поведение компонент. Оба файла автоматически синхронизируются Delphi, так что если добавить новую форму в ваш проект, связанный с ним файл .pas автоматически будет создан, и его имя будет добавлено в проект.

Такая синхронизация и делает Delphi two-way-инструментом, обеспечивая полное соответствие между кодом и визуальным представлением. Как только вы добавите новый объект или код, Delphi устанавливает т.н. «кодовую синхронизацию» между визуальными элементами и соответствующими им кодовыми представлениями.

Например, предположим, вы добавили описание поведения формы (соотв. обработчик событий), чтобы показывать окно сообщения по нажатию кнопки. Такое описание появляется, если дважды щелкнуть мышкой непосредственно на оъект Button в форме или дважды щелкнуть мышью на строчку OnClick на странице Events в Инспекторе объектов. В любом случае Delphi создаст процедуру или заголовок метода, куда вы можете добавить код.

Cоздавая этот код, Delphi автоматически формирует декларацию объекта TForm1, которая содержит процедуру ButtonClick, представляющую из себя собственно обработчик события.

Конечно вы запросто можете решить после получения этого кода, что автоматически созданные имена Вас не устраивают, и заменить их. Например, Button1 на Warning. Это можно сделать изменив свойство Name для Button1 при помощи Инспектора объектов. Как только вы нажмете Enter, Delphi автоматически произведет соответствующую синхронизацию в коде. Так как объект TForm1 существует в коде, вы свободно можете добавлять любые другие поля, процедуры, функции или object definition. К примеру, вы можете дописать в коде свою собственную процедуру, обрабатывающую событие, а не делать это визуальным методом.

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

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

Добавление новых объектов

Delphi — это прежде всего среда разработки, базирующаяся на использовании компонент. Поэтому вы можете добавлять совершенно новые компоненты в палитру компонент. Вы можете создавать компоненты внутри Delphi, или вводить компоненты, созданные как управляющие элементы VBX или OLE 2.0, или же вы можете использовать компоненты, написанные на С или С++ в виде dll.

Последовательность введения новой компоненты состоит из трех шагов:

  • наследование из уже существующего типа компоненты
  • определение новых полей, свойств и методов
  • регистрация компоненты

Это все делается через меню Install Components

Добавление управляющих элементов VBX

Delphi генерирует объектное расширение VBX, которое инсталлируется в качестве компонент.

Например, если вы инсталлируете SaxComm VBX из Visual Solutions Pack компании Borland в Delphi, автоматически генерится тип объекта TComm, который наследуется из стандартного TVBXControl. Когда вы инсталлируете компоненты, Delphi будет компилировать и подлинковывать их к библиотеке компонент.

Делегирование: события программируются проще

Под делегированием понимается то, что некий объект может предоставить другому объекту отвечать на некоторые события.

Такая модель в некоторых случаях значительно упрощает программирование. Например, вместо того чтобы создавать подкласс для Windows controls при добавлении нового поведения, вы можете просто привязать процедуру обработки события, которая будет вызываться автоматически на каждый щелчок мышью пользователем или нажатие им клавиши. Аналогично вы можете написать процедуру определения допустимости таблицы, которая будет выполняться обработчиком события, когда транзакция начинается или завершается, записи вставляются, удаляются или изменяются.

К примеру, когда вы добавляете кнопку в форму и прикрепляете код, обрабатывающий нажатие, вы фактически используете делегирование кода для ассоциирования кода с событием OnClick. Такая ассоциация происходит для вас автоматически. Если проверить страницу Events в Инспекторе объектов для вашего приложения, можно увидеть ассоциированные с событиями процедуры.

Ссылки на классы

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

Обработка исключительных ситуаций

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

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

Обработка исключений реализована в виде exception-handling blocks (также еще называется protected blocks), которые устанавливаются ключевыми словами try и end. Существуют два типа таких блоков: try. except и try. finally.

Общая конструкция выглядит примерно так:

Конструкция try. finally предназначена для того, чтобы разработчик мог быть полностью уверен в том, что, что бы ни случилось, перед обработкой исключительной ситуации всегда будет выполнен некоторый код (например, освобождение ресурсов).

Немного о составе продукта

Документация.

  • Руководство пользователя
  • Руководство по написанию компонент
  • Построение приложений, работающих с базами данных
  • Руководство по генератору отчетов ReportSmith
  • Руководство по SQL Links

В составе Delphi входит 5 интерактивных обучающих систем, документация в электронном виде и около 10 Мб справочной информации.


Требования к аппаратным и программным средствам

  • Windows 3.1 и выше
  • 27 Mb дискового пространства для минимальной конфигурации
  • 50 Mb дискового пространства для нормальной конфигурации
  • процессор 80386, а лучше 80486
  • 6-8 Mb RAM

Заключение

В данной статье описаны возможности нового программного продукта компании Borland, а также некоторые особенности проектирования приложений с его помощью. В мире уже многие разработчики твердо ориентируются на использование Delphi как на инструмент, позволяющий создавать высокоэффективные клиент-серверные приложения. Более того, список готовых профессионально выполненных приложений настолько велик, что не позволяет полностью привести его в статье. Диапазон разработанных при помощи Delphi программных продуктов также поражает — от игровых программ до мощнейших банковских систем. Прошло всего полгода — и столько результатов. Delphi как продукт имеет версию 1.0, мы уже имеем сведения о том, что предполагается реализовать в следующей версии Delphi, и поскольку Delphi разрабатывается на Delphi, можем быть уверены, что разработка новой версии ведется действительно скоростными методами.

Borland delphi 4 0 для начинающих повторное использование приложений

Delphi 4 для начинающих. Часть 3
Разгребаясь с письмами читателей, я решил начать следующую статью с работы с файлами и строковыми переменными. На такой ход меня натолкнуло следующее письмо: «Я только начал программировать на Delphi. У меня к вам большая просьба: при создании различных программ часто приходится работать с файлами (создавать, удалять, копировать, переписывать файлы), не могли бы вы в ближайшем номере «Компьютерной газеты» мне рассказать о методах работы с файлами». Что ж, желание просящих выполняю.

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

Для использования файлов в приложении разработчику приходится решать множество задач. Основные из них – это поиск необходимого файла и выполнение с ним операций ввода/вывода.

Основные принципы и структура файловой системы мало изменились еще со времен MS-DOS. Если не принимать во внимание способы защиты файлов и организацию их хранения на уровне кластеров, то все остается без изменений вот уже скоро двадцать лет. Новые варианты файловых систем (FAT32, NTFS) не изменяют главного – понятия файла и способов обращения к нему. Поэтому современный программный код Delphi, например, для чтения данных из файла, удивительно похож на аналогичный, написанный, к примеру, на Turbo Pascal 4.0.

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

Такие файловые переменные используются для организации быстрого и эффективного ввода/вывода безотносительно к типу данных. При этом подразумевается, что данные читаются или записываются в виде двоичного массива. Для этого используются специальные процедуры блочного чтения и записи.

Типизированные файловые переменные обеспечивают ввод/вывод с учетом конкретного типа данных. Для их объявления используется ключевое слово file of, к которому добавляется конкретный тип данных. Например, для работы с двоичным файлом файловая переменная будет иметь вид:

v ar ByteFile: file of byte;

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


type Country = record

var CountryFile: file of Country;

Для работы с текстовыми файлами используется специальная файловая переменная TextFile или Text :

Теперь, после рассмотрения типов файлов, рассмотрим две наиболее распространенные операции, выполняемые с файлами: чтение и запись. Для их выполнения применяются специальные функции файлового ввода/вывода.

Итак, для выполнения операции чтения и/или записи необходимо выполнить следующие действия:

  1. Объявить файловую переменную;
  2. При помощи функции AssignFile связать эту переменную с требуемым файлом;
  3. Открыть файл при помощи функций Append, Reset или Rewrite;
  4. Выполнить операции чтения и/или записи. При этом, в зависимости от сложности задачи и структуры данных, может использоваться целый ряд вспомогательных функций.
  5. Закрыть файл при помощи функции CloseFile .

В качестве примера рассмотрим небольшой фрагмент исходного кода программы:

If OpenDlg1.Execute then AssignFile(F, OpenDlg1.fileName) else exit;

While Not EOF(F) do

Если в диалоге OpenDlg1 был выбран файл, то его имя связывается с файловой переменной F при помощи процедуры AssignFile . В качестве имени файла всегда рекомендуется передавать полное имя файла (включая путь к нему). Как раз в таком виде возвращают результат выбора файла диалоги работы с файлами, описанные в материале прошлого номера. Затем при помощи процедуры Reset этот файл открывается для чтения и записи. В цикле осуществляется чтение из файла текстовых строк и запись их в компонент TMemo . Процедура Readln осуществляет чтение текущей строки файла и переходит на следующую строку. Цикл выполняется до тех пор, пока функция EOF не сообщит о достижении конца. По завершении цикла файл закрывается.

Теперь остановимся поподробнее на назначении функций, используемых для файлового ввода/вывода. Открытие файла может осуществляться тремя процедурами:


procedure Reset(var F [: File; RecSize: Word ] );
— открывает существующий файл для чтений и записи, текущая позиция устанавливается на первой строке файла;


procedure Append(var F: Text);
— открывает файл для записи информации после его последней строки, текущая позиция устанавливается на конец файла;

procedure Rewrite(var F: File [; Recsize: Word ] ); — создает новый файл и открывает его, текущая позиция устанавливается в начало файла. Если файл с таким именем уже существует, то он перезаписывается.

Чтение данных из файла выполняют процедуры Read и Readln.


procedure Read( [ var F: Text; ] V1 [, V2. Vn ] ); —
для текстовых файлов;


Procedure Read(F, V1 [, V2,…,Vn ] );
— для типизированных файлов.

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

procedure Readln([ var F: Text; ] V1 [, V2, . Vn ]); — считывает одну строку текстового файла и устанавливает текущую позицию на следующую строку. Если использовать процедуру без переменных, то она просто передвигает текущую позицию на следующую строку.

Процедуры для записи данных в файл Write и Writeln работают аналогично.

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


procedure Seek(var F; N: Longint); —
обеспечивает смещение текущей позиции на N элементов. Размер одного элемента в байтах зависит от типа данных файла (от типизированной переменной).

Рассмотрим теперь режим блочного чтения и записи в файл. Он обеспечивает ввод/вывод данных между файлом и областью адресного пространства (буфером). Этот режим отличается значительной скоростью, причем скорость пропорциональна размеру одного передаваемого блока – чем больше блок, тем больше скорость.

Для реализации этого режима необходимо использовать только нетипизированные файловые переменные. Размер блока определяется в процедуре открытия файла ( Reset, Rewrite, Append ). Непосредственно для выполнения операций используются процедуры BlockRead и BlockWrite . Процедура


procedure BlockRead(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);

выполняет запись блока из памяти в файл. При этом параметр F содержит нетипизированную файловую переменную, связанную с нужным файлом, параметр Buf определяет переменную (число, строку, массив, структуру), в которую читаются байты из файла, параметр Count определяет число считываемых блоков, а параметр AmtTransferred возвращает число реально считанных блоков.

В блочном режиме чтения/записи размер блока необходимо выбирать таким образом, чтобы он был кратен размеру одному значению типа, который хранится в файле. Например, если в файле хранятся значения типа Double (8 байт), то размер блока может быть равен 8, 16, 24, 32 и т.д. Фрагмент исходного кода блочного чтения из такого файла выглядит так:

DoubleArray: array [0..255] of Double;

If OpenDlg.Execute then AssignFile(F, OpenDlg.FileName) else Exit;

BlockRead(F, DoubleArray, 32, Transfered);

ShowMessage(‘Считано ‘+IntToStr(Transfered)+’ блок(-а,-ов)’);

Как видно из примера, размер блока установлен в процедуре Reset и кратен размеру элемента массива DoubleArray, в который считываются данные. В переменную Transfered возвращается число считанных блоков. Если размер файла меньше заданного в процедуре BlockRead числа блоков, ошибка не возникает, а в переменную Transfered передается число реально считанных блоков.

Обратите внимание, что для процедуры BlockRead организовывать цикл для чтения нескольких блоков нет необходимости.


procedure BlockWrite(var f: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);

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

Эта запись обеспечивает хранение характеристик файла при удачном поиске. Дата и время создания файла хранятся в формате MS-DOS, поэтому для получения этих параметров в формате TDateTime необходимо использовать функцию


function FileDateToDateTime(FileDate: Integer): TDateTime;

Обратное преобразование выполняет функция


function DateTimeToFileDate(DateTime: TDateTime): Integer;

Свойство Attr может содержать комбинацию следующих значений:

faReadOnly – только для чтения;

Для определения параметров файла используется оператор AND :


If SearchRec.Attr AND faReadOnly) > 0 then ShowMessage(‘
файл только для чтения’);

Непосредственно для поиска файлов используются функции FindFirst и FindNext .

function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;

находит первый файл, заданный полным маршрутом Path и параметрами Attr . Если заданный файл найден, функция возвращает 0, иначе – код ошибки. Параметры найденного файла возвращаются в записи F типа TSearchRec .

function FindNext(var F: TSearchRec): Integer;

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

Для освобождения ресурсов, выделенных для выполнения поиска, применяется функция

procedure FindClose(var F: TSearchRec);

В качестве примера организации поиска файлов рассмотрим фрагмент исходного кода, в котором маршрут поиска файлов задается в однострочном текстовом редакторе DirEdit, а список найденных файлов передается в компонент TListBox.

FindFirst(DirEdit.Text, faArchive + faHidden, SearchRec);

While FindNext(SearchRec) = 0 do

Напоследок, как и обещал в прошлом номере, немного о создании дополнительных форм. Итак, для создания дополнительной формы необходимо воспользоваться пунктом меню New Form ( File/New Form ) или кнопкой New Form на панели инструментов. Перед Вами появится новая форма проекта с названием Form2 . При запуске программы эта форма не будет активизирована. Для ее запуска необходимо воспользоваться процедурой Show из кода исходной программы. Список существующих форм и возможность активизация форм проекта доступны при нажатии на кнопку ViewForm на панели инструментов или при нажатии на пункт Forms… ( View/Forms… ). Таким образом, необязательно загромождать экран бесконечными формами проекта, когда на данный момент из них необходима только одна. Достаточно закрыть ненужные формы, а при необходимости активизировать их при помощи диалога ViewForm .

Канал в Telegram

Вы здесь

Установка Borland Delphi 7 на Windows XP и Windows 7

Цель урока: Подготовить среду разработки Borland Delphi 7 для наших дальнейших экспериментов.

Почему выбрана именно среда Borland Delphi 7 ?
Borland Delphi 7 — это одна из стабильных и проверенных временем версий языка Delphi (получить можно здесь). До сих пор в ней ведутся разработки, как крупных проектов, так и мелких. И по сей день она успешно справляется с задачами. Многие программы, разработанные в Borland Delphi 7, благополучно работают и на операционных системах Windows 7 (x84, x64). Есть небольшая проблема в новых версиях ОС Windows с отображением справки Delphi, но пара манипуляций позволяет это исправить. Кстати, по поводу справки Delphi, она очень подробная и понятная (как правило, это редкость в языках программирования), хотя и англоязычная. В далеких «нулевых», когда я только начинал знакомиться с данной средой (точнее первое знакомство было с Borland Delphi 4, 5 и 6), справка была спасателем и путеводителем. На то время, интернет еще был не настолько развит и наполнен форумами, статьями как сейчас (да и вообще, доступ к инету это была мечта :) ), а книги дороги и по существу в них информации минимум, справка была вещь не заменимая. Так же, IDE среда разработки Borland Delphi 7, на мой взгляд, для начинающих (да и вообще для разработчиков) интуитивно более понятна и проста в освоении, чем более младшие версии языка (в последующих версиях очень запутали и усложнили интерфейс). Но, есть один приятный момент, большинство приложений написанных в Delphi 7, легко открываются и компилируются в более поздних версиях языка (только с используемыми сторонними компонентами могут возникнуть некоторые проблемы).
Что-то увлекся я :)

После того, как Вы вставили диск с дистрибутивом Delphi 7 произойдет автозапуск и Вы увидите меню с выбором приложений для установки (если запуск не произошел, то зайдите на диск и запустите install.exe). Нас пока интересует только пункт «Delphi 7». Щелкаем по нему.

После подготовки к установке появится окно приветствия. Жмем «Next>»

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

После того, как Вы ввели регистрационную информацию, будет предложено ознакомится с лицензионным соглашением и дать свое согласие. Как только Вы «прочтете» соглашение, необходимо отметить «I accept the terms in the license agreement». Жмем «Next>»

На следующем шаге предложен выбор типа установки: Typical (полный), Compact(установка только необходимых компонентов языка), Custom(ручной). Выбираем тип «Typical». Жмем «Next>»

Возможно, выскочит следующее сообщение. Жмем «Нет».

На данном шаге нам будет предложено включить или отключить установку VisiBroker/Corba. В рамках обучения данная поддержка нам не пригодится, так что отключаем. О том, что это такое можете почитать в Wiki здесь. Жмем «Next>»

На данном этапе, будет предложено выбрать, какой офис будет поддерживаться по умолчанию. Ставим Office XP. Жмем «Next>»

Здесь нам предлагают установить InterBase Client. В ближайшей перспективе он нам не нужен. Снимаем галочку. О том, что это такое, читаем здесь. Жмем «Next>».

На этом этапе, нам предложено указать пути установки. Не будем заморачиваться, да и путаница в дальнейшем нам не нужна. Оставляем все по умолчанию. Жмем «Next>»

На этом шаге нам рекомендуют сохранить установочную базу на жестком диске. В дальнейшем при доустановке компонентов или просто деинсталляции нам не нужен будет CD. Рекомендую оставить. Жмем «Next>»

Итак, наконец-то процесс установки пошел. Сидим, пьем кофе, ждем окончания процесса. :)

После успешного завершения установки мы получим следующее окно.

Илон Маск рекомендует:  Как зарегистрироваться в Skype. Простая инструкция

Все. Поздравляю! Установка завершена. Жмем «Finish» и приступаем к работе (Пуск->Программы->Borland Delphi 7-> Delphi 7 ). Возможно, потребуется перезагрузка системы.

П.С.: Данная версия отлично работает на Windows 7 x86 и Windows 7 x64. Одно НО!. В Windows 7 нет поддержки старой справки WinHelp32 из-за чего нет возможности пользоваться справкой Delphi. А без нее как без рук :) . Но не переживайте, получите дополнение Windows6.1-KB917607 на официальном сайте Microsoft. Устанавливаете и справка работает :). Все!

Brullworfel

Нашел в интернете много способов реализации на запрет запуска второго экземпляра приложения. Выбрал самый на мой взгляд минималистский. Я думаю, может многим понадобится — вообще применяется это достаточно часто.

Итак, нужно открыть исходный код главного файла проекта (меню Project — View Source). В секцию uses добавляем библиотеки Windows и Dialogs:

В секцию Var (переменные, если нет такой — создаем):

Теперь, непосредственно перед строкой:

Добавим нашу проверку, не запущен ли уже другой экземпляр программы:

H := CreateMutex(nil, True, ‘уникальная фраза’);
if GetLastError = ERROR_ALREADY_EXISTS then
begin
showmessage(‘Программа уже работает!’);
Exit;
end;

‘уникальная фраза’ — это что-то например «и64ерм9со46к79826о» — в общем то, что наверняка будет использовать только Ваша программа. Можно также использовать,например, название программы.

Блог GunSmoker-а

. when altering one’s mind becomes as easy as programming a computer, what does it mean to be human.

17 июня 2010 г.

Локализация проектов Delphi — родной способ (ITE — Integrated Translation Environment)

Как ни странно, в интернете полно рассказов про сторонние приложения для локализации ваших проектов, есть сравнительные обзоры разных утилит, но нет практически ничего про родной механизм Delphi для локализации. Более того, когда на форумах кто-то спрашивает, как ему лучше добавить в программу поддержку нескольких языков, ему советуют что угодно, но только не родной механизм Delphi. Видимо, второе является следствием из первого. Хотя ITE был в Delphi. аж с Delphi 5. Ещё один пример проблемы Copy&Paste? Когда решение из лохматых середины 90-х кочует аж до 2010-го? Кто знает.

В общем, эта статья призвана восполнить этот пробел (да, во многом это перевод справки, но далеко не всё).

Примечание: ITE работает для Win32 и Win64, но не для FireMonkey-приложений.

Обзор способов локализации

Локализация в Windows

В Windows каждый исполняемый модуль может содержать ресурсы — грубо говоря, это данные, вынесенные в отдельный блок внутри PE-файла. Бывают они разных типов, среди которых нас будут интересовать таблицы строк. Собственно, это ровно и есть то, что можно предположить по названию: таблица строк, т.е. — массив из строк. Сами строки идентифицируются по численному идентификатору (ID).

Довольно подробно внутреннее устройство таблиц строк мы уже разбирали.

Сама возможность локализации заключается в том, что одна и та же строка в таблице может присутствовать в нескольких экземплярах, идентифицируемых по LangID — идентификатору языка. Т.е. конкретная строка идентифицируется с помощью 2-х параметров: ID строки и ID языка.

Иными словами, исполняемый модуль хранит свои данные в ресурсах (таблицах строк), каждая таблица содержит все переводы строки на разные языки. При загрузке строки из ресурсов, берётся подходящая строка на базе текущего языка пользовательского интерфейса (язык UI).

В действительности, это далеко не самый удобный способ, поскольку для перевода на доп. язык, надо модифицировать сам исполняемый модуль, язык нельзя добавить или удалить как «плагин». Сама ОС не слишком-то использует этот способ, тем не менее, он есть. В основном, как памятник философии старых времён: «но что, если это кому-нибудь нужно»?

Локализация в Delphi

В Delphi используется модификация базового механизма ОС. Заключается она в следующем. Мы по-прежнему используем ресурсы для хранения данных для локализации. Но в этот раз каждый исполняемый модуль содержит только строки для языка по умолчанию. Все прочие языки выносятся в отдельные модули — DLL, которые не содержат исполняемого кода, а содержат только ресурсы (так называемая ресурсная DLL или ресурсный модуль). Создаётся по одной DLL на каждый язык, каждая DLL содержит локализируемые данные программы, переведённые на соответствующий язык. Когда программа обращается к строке в таблице строк, берётся вариант строки из DLL, соответствующей текущему языку, а не из базового модуля.

В том или ином варианте эта же техника применяется и другими программами (написанными не на Delphi), в том числе и самой ОС (например, MUI). В действительности, это весьма (если не самый) распространённый способ.

В WinAPI нет функций, реализующих такую схему (по той простой причине, что вся «схема» заключается в указании одного параметра функции загрузки строки — модуля), поэтому Delphi использует свою реализацию. За счёт «магии компилятора», обращение к строке в ресурсах приводит к вызову функции, выбирающей ресурсную DLL и загружающей строку из неё. Для подробностей работы этого механизма — см. функции LoadResString и FindResourceHInstance в System.pas.

Замечу, что этот механизм всё ещё не исключает совмещения с предыдущим. Поскольку таблица строк всё ещё может содержать несколько вариантов строк в разных языках. Например, базовый модуль может включать в себя русский и английский, а все остальные языки — быть реализованными через ресурсные DLL. К сожалению, этот последний вариант не поддерживается Delphi. Модуль с несколькими языками вам придётся собирать руками (что, впрочем, не так сложно). Как крайний вариант — вы можете включить все языки в один исполняемый модуль. Это если вы не хотите дополнительных файлов.

Другие средства

Другие средства используют самые разнообразные способы. Но достаточно редко при этом используются ресурсы. Чаще всего локализированные данные оформляются отдельным текстовым файлом (ini, XML и custom-форматы).

Наиболее популярные сторонние решения:

  • dxGetText — адаптация GNU GetText для Delphi.
  • TJvTranslator из JVCL.
  • TsiLang — платный, но зато и самый мощный.

Плюсы/минусы каждого подхода смотрите самостоятельно. Лично мне нравится ITE (иначе писал бы я эту статью).

Локализация приложений с использованием Translation Manager

Утилиты для переводов

Delphi включает в себя набор утилит для локализации приложений (Translation Tools). Они доступны как для Delphi, так и для C++ Builder-а и работают для проектов любых типов.

Утилиты представлены в двух вариантах:

    Встроенный Translation Manager (Integrated Translation ManagerITM) — является частью IDE. Он помогает вам локализовать ваши проекты. ITM может создавать локализированные версии проектов для разных языков. Состоит он из таких частей:
  • Resource DLL Wizard (мастер создания ресурсных DLL) — создаёт проекты ресурсных DLL для выбранных вами языков. Вызывается через Project > Languages > Add.
  • Translation Editor — показывает табличку ресурсов. В каждой колонке показан оригинал, перевод, комментарий и т.п. Именно в нём вы делаете перевод своей программы. Вызывается через View > Translation Manager > Translation Editor или просто щелчком по файлу с ресурсами в менеджере проектов.
  • Translation Repository — предоставляет центральное хранилище для переводов. Попросту говоря, словарик. Это хранилище общее для всех проектов. Вы можете брать оттуда готовый перевод при локализации проекта или занести свой перевод в хранилище, когда вы закончили локализацию проекта. Вызывается по View > Translation Manager > Translation Repository.
  • Translation Tools Options — настройки утилит локализации. Вызывается по Tools > Options > Translation Tools Options.
  • Внешний Translation Manager (External Translation ManagerETM) — это автономная программа, которая может быть запущена на любой машине, даже без Delphi. Вы можете использовать её для локализации своих проектов без IDE. У ETM практически такая же функциональность, как и у Translation Editor, но с несколькими дополнительными менюшками, обусловленными автономной природой. ETM не может создавать новые проекты, но может импортировать существующие проекты. Вы можете дать ETM переводчикам, чтобы они могли делать переводы вашей программы.

Подготовка проекта

Ну, прежде чем приступать к локализации, вам надо бы сохранить проект. Также убедитесь, что он вообще компилируется.

Далее, вам нужно писать код специальным образом. Во-первых, если вы хороший программист, то вы не используете «волшебные значения» у себя в программе, а объявляете соответствующие константы. Например, вместо:

Если вы так делаете — вам повезло. Нет — пора бы начинать делать :)

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

Все строковые данные в своём коде вы должны оформить в виде констант. Если строка должна локализироваться — помещайте её в секцию resourcestring. Если нет — пихайте в const. Например:

Правило стиля: если вы используете resourcestring, то идентификатор обычно начинается с «rs» или «S». Для строк в const такого правила нет, но префикс «S» выглядит достаточно удобно. Вы можете захотеть различать типы строк в коде (rs/S) или использовать всегда одинаковое наименование (S/S) — ваш выбор.

Рассматривайте строки в ресурсах как обычные константы. Вы можете использовать в тексте идентификатор строки и компилятор сам позаботится о загрузке этой строки из модуля ресурсов. Вам ничего не нужно для этого делать. Более того, вам также ничего не надо делать для получения локализованной версии строки. Никаких вызовов типа GetTranslatedString(SResult). Используйте константу напрямую, а магия компилятора сделает остальное — загрузит нужный язык и подставит перевод. Достаточно просто.

Блоки resourcestring обычно располагаются в модуле сразу после implementation или же их выносят в отдельный модуль типа StrConsts.pas. Поступайте как вам угодно.

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

Ещё раз сохраните всё и убедитесь, что проект компилируется.

Resource DLL Wizard/добавление нового языка

Прежде чем приступить к собственно переводу, вам нужно добавить языки в ваш проект. Делается это с помощью Resource DLL Wizard. Выберите в меню Project > Languages > Add или File > New > Other > Delphi Projects > Resource DLL Wizard.

На первом шаге вы выбираете проекты, для которых вы добавляете язык (обычно это только один проект; несколько их будет, если их несколько в группе проектов в менеджере проектов), и для каждого проекта вы указываете язык по умолчанию. Обычно это английский (409) или русский (419).

Язык по умолчанию — это тот язык, на котором будет программа, если не найден более подходящий язык.

Далее вы выбираете один или несколько языков, которые хотите добавить:

Полный список доступных языков можно посмотреть в справке.

На следующем шаге вам предложат сменить пути для проектов ресурсных DLL. По умолчанию, эти проекты размещаются в подпапках проекта. Имя подпапки = аббревиатуре языка по ISO 639x. Например, если ваш проект лежит в C:\. \Projects\My Project 1\, и вы выбрали три языка (русский, японский и итальянский), то Resource DLL Wizard создаст три новых проекта, разместив их в папках C:\. \My Project 1\RUS\, C:\. \My Project 1\JPN\ и C:\. \My Project 1\ITA\ соответственно. Достаточно разумный выбор, поэтому чаще всего вы пропускаете этот шаг.

После ещё нескольких маловажных вопросов (щёлкайте просто Next/Yes), Resource DLL Wizard создаст вам проекты:

Как видите, для одного головного проекта я добавил три языка, и Resource DLL Wizard создал мне три дополнительных проекта. В каждом проекте есть несколько файлов — по одному на каждый модуль с DFM или блоком resourcestring.

Вы можете запускать процедуру добавления нового языка в любой момент. Просто выбирайте эту же команду, щёлкайте на дополнительном языке — и Next/Next/Next. Также, язык можно удалить, если он стал не нужен — в том же меню есть команда Remove (она не удаляет файлы с диска, а просто удаляет проект из группы проектов).

Translation Editor/перевод проектов

После добавления языков в проект, вы можете использовать Translation Editor для просмотра и редактирования VCL-форм и строковых ресурсов.

Проще всего дважды щёлкнуть по нужному файлу (dfm или rc) в проекте ресурсной DLL. Откроется такое окно:

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

Также вы можете фильтровать строки таблицы (скажем, показать только не переведённые), менять статус строк, производить поиск (перейти к следующей не переведённой строке), переключать редактор в single line/multi line — всё это делается кнопками на тулбаре и из контекстного меню. Дополнительно, вы можете снабжать строки комментариями для переводчика.

Обратите внимание, что вы можете редактировать не только строки, но и любые другие свойства компонентов. Это важно, если в каком-то языке у вас не влезает какая-то надпись — в этом случае вы просто раздвигаете компоненты, чтобы она влезла. Две кнопки с рисунком форм в верхнем тулбаре позволяют вам показать исходную и транслированную версии форм. Т.е. вы можете посмотреть, как будет выглядеть окно, не запуская программу на выполнение. Более того, нажав на кнопку «Stay on top» чуть правее, вы можете зафиксировать формы, пока вы выполняете перевод. Любое изменение в Translation Editor тут же отображается на предпросмотре форм. Более того, вы можете не вводить свойства, а просто таскать компоненты по форме:

Очень удобно, надо сказать. Понятно, что если вы откроете на редактирование rc-файл, то никаких форм там не будет — просто строки и инструменты для строк.

В конце не забудьте нажать кнопочку Save (вы также можете настроить авто-сохранение в настройках ITE).

Translation Repository/использование хранилища

Translation Repository позволяет вам хранить базу данных переводов, которая разделяется между всеми проектами (и может разделяться несколькими разработчиками). Работая в Translation Editor, вы можете извлекать уже переведённые строки из хранилища Translation Repository и сохранять в него новые переводы.

По умолчанию, каждый раз, когда вы создаёте/обновляете ресурсный модуль, все значения в нём извлекаются из словаря Translation Repository. Если же перевода в нём нет, то используется базовый вариант (строка из главного проекта). Вы также можете редактировать переводы прямо в Translation Repository через его собственный интерфейс:

Translation Repository хранит свои данные в XML-файле с расширением .tmx .

По умолчанию, БД Translation Repository хранится в файле default.tmx в папке RAD Studio\bin . К сожалению, это не слишком удачное место, потому что часто запись в эту папку запрещена. Поэтому я рекомендую вам сразу же скопировать этот файл куда-то в более пригодное место — в Мои документы или Application Data. Сделать это можно командой «Save as» в окне Translation Repository. Кроме того, этот файл указывается в диалоге настроек Translation Repository Options (Tools > Options > Translation Tools Options > Repository).

External Translation Manager/делегация перевода другому человеку

ETM доступен только в новых Delphi (начиная с D2009 — скажите спасибо введению поддержки Unicode). Вы можете использовать ETM, если вам недоступна Delphi. Например, для выполнения перевода переводчиком, а не программистом ;)

Подготовка ETM

Чтобы использовать ETM как автономное приложение, вам надо просто скопировать необходимые файлы на другую машину и зарегистрировать *.bpl в ETM:
1. Создайте в любом месте папку для файлов ETM.
2. Скопируйте следующие обязательные файлы из вашей папки RAD Studio\n.n\Bin в папку, созданную на шаге 1:

  • etm.exe
  • designide .bpl
  • dfm .bpl
  • itecore .bpl
  • rc .bpl
  • vclide .bpl

А также такие файлы (опционально):

  • dcl31w .bpl
  • dclact .bpl
  • dclado .bpl
  • dclbcbsmp .bpl
  • dclbde .bpl
  • dclDataSnapIndy10ServerTransport .bpl
  • dclDataSnapProviderClient .bpl
  • dclDataSnapServer .bpl
  • dcldb .bpl
  • dcldbx .bpl
  • dcldbxcds .bpl
  • dclib .bpl
  • dclIe .bpl
  • dclIndyCore .bpl
  • dclIndyProtocols .bpl
  • dclmcn .bpl
  • dclmid .bpl
  • dclnet .bpl
  • dclribbon .bpl
  • dclsmp .bpl
  • dclstd .bpl
  • dclTee8 .bpl
  • dcltouch .bpl
  • dclwbm .bpl

Из папки Windows\System32 (SysWOW64 для 64-х битной Windows) также нужно взять такие обязательные файлы:

  • rtl .bpl
  • vcl .bpl
  • vclactnband .bpl
  • vclimg .bpl
  • vclx .bpl
  • xmlrtl .bpl

и следующие опциональные файлы:

  • * .bpl

Где nnn — это версия вашей Delphi. Например, RAD Studio 2009 имеет версию 120, а 2010 — 140. Т.е., designide .bpl становится designide120.bpl или designide140.bpl.
3. Упакуйте папку с ETM в архив и передайте человеку, который будет выполнять перевод.

P.S. Не спрашивайте меня, зачем нужны опциональные файлы — я понятия не имею, а справка молчит. Но есть подозрение, что это надо для приложений с пакетами. Хотя зачем — непонятно.

Установка ETM

1. Распакуйте архив с ETM в любую папку. Предпочтительно — в C:\Program Files\.
2. Запустите ETM, дважды щёлкнув по etm.exe.
3. Выполните команду Tools > Options > Packages.
4. Нажмите кнопку «Add».
5. В открывшемся диалоге перейдите в папку с ETM и выберите все design-time пакеты (dcl*.bpl).

Подготовка проекта для перевода в ETM

Разработчик должен создать в проекте языки, как я описывал это выше. Файлы ресурсных DLL сохраняются в отдельных папках.

Для перевода проекта, вам нужно передать переводчику файлы:

  • Папку с ресурсной DLL для конкретного языка
  • Файл проекта dproj/cbproj
  • Хранилище переводов (*.tmx)

Использование ETM для перевода проектов

Собственно, вы запускаете ETM, открываете в нём файл проекта или группу проектов (как обычно: File/Open) и начинаете редактировать:

Вкладка Project содержит настройки проекта. Вкладка Workspace — рабочие данные. Выбрав корневой узел, вы получите статистику, а выбрав конкретный файл — увидите обычный Translation Editor:

Вы должны выполнить перевод, сохранить его и отправить изменённые файлы (папку с ресурсной DLL) разработчику. Разработчик перезапишет свои файлы вашей версией и скомпилирует ресурсную DLL с локализованной версией программы.

Deploy проекта

Для этого вам надо сделать полную сборку всех проектов, включая ресурсные DLL. Желательно перед сборкой также выполнить обновление ресурсных DLL (см. ниже).

В результате вы получите главный файл (exe или DLL) и по файлу на каждый язык. Эти файлы являются DLL, но имеют расширения, обозначающие язык. Например, Project1.exe и Project1.RUS, Project1.JPN и Project1.ITA (в некоторых случаях расширение может иметь вид en-US). Вы можете распространять все файлы вместе или же распространять только exe, а файлы языков выложить для отдельного скачивания — ваш выбор.

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

К сожалению, выделить отдельную папку для хранения языковых файлов (типа подпапки Languages) нельзя (ну, не используя хаки, конечно же).

Прочее

Обновление переводов при изменениях проекта

После того, как вы закончили перевод проекта, вы можете потом ещё работать над ним и вносить какие-то изменения, в результате которых в проект добавятся новые данные для локализации (ну или удалятся). Любые такие изменения не появятся автоматически в других проектах.

Чтобы обновить ресурсные DLL сохраните и скомпилируйте проект (если вы используете ETM — откройте проект заново), затем выполните команду: Project > Languages > Update localized projects (Project > Run updates в ETM). После этого ваши изменения будут отражены и в ресурсных DLL. Вы сможете дополнить перевод и пересобрать все проекты.

Файлы, создаваемые утилитами перевода

.dfm
Утилиты перевода хранят для каждого целевого языка отдельный файл формы .dfm для каждой формы в вашем приложении. Эти файлы включают в себя данные (включая переводы строк), которые вы видите в Translation Editor.
.rc Resource DLL Wizard использует созданный компилятором .drc файл для создания .rc файла для каждого целевого языка. Эти .rc файлы содержат строковые ресурсы, которые были объявлены в блоках resourcestring в вашем коде.
.tmx Translation Repository хранит свою базу переводов в файле .tmx file. Вы можете завести больше одного словаря в нескольких .tmx файлах.
.proj Translation Manager хранит проекты ресурсных DLL в разных папках (указываются при создании языка), а ссылки на эти проекты хранятся в файле проекта .dproj , .cbproj или .bdsproj .

Примечание: вам не следует редактировать эти файлы вручную.

Активный язык проекта

При запуске через F9 (Run/Run) загружается язык базового модуля. Но вы можете указать, что хотите загружать конкретный язык (ресурсную DLL). Для этого выполните команду Project > Languages > Set active. Укажите язык и при следующем запуске программы будет использоваться именно он. Для отмены этой настройки выполните эту же команду, но из списка доступных языков выберите базовый модуль.

Заметьте, что эта настройка не влияет на язык, используемый при реальном выполнении программы вне отладчика на клиентских машинах. В свободном прогоне загружается ресурсная DLL, определяемая языком пользовательского интерфейса. Т.е., грубо говоря, если кнопки в MessageBox написаны на японском — будет выбран японский язык. На русском — загружаем русскую DLL. И т.д. Это не то же самое, что язык в региональных настройках, клавиатурные раскладки или язык для не-unicode программ — это всё другие, не связанные вещи. В младших редакциях Windows язык UI жёстко зашит в систему и сменить его нельзя. Хотите сменить язык — ставьте другую версию ОС. В старших — вы можете устанавливать языковые пакеты и менять язык интерфейса по требованию (MUI) — для смены языка особых прав не надо (в отличие от его установки), нужно только сделать re-logon (выйти/зайти). Более того, каждый пользователь в системе может иметь свою настройку языка интерфейса:

В большинстве случае такое поведение — это то, что вы хотите. Если пользователь работает в немецкой Windows, ему нет смысла запускать вашу программу на русском или английском. Иначе он давно бы поставил себе русскую/английскую Windows (или сменил бы язык UI, если его редакция Windows это позволяет).

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

Тем не менее, если вы хотите это сделать, то вы можете это сделать. Для задания override на текущий язык вам нужно отредактировать ключ реестра Software\CodeGear\Locales (для старых версий Delphi — Software\Borland\Delphi\Locales или Software\Borland\Locales) в HKCU или HKLM (смотря на кого меняете настройку): добавив строковый (REG_SZ) параметр, имя которого равно полному пути к вашему exe или DLL библиотеке, а значение равно имени языка, например, ru-RU или en-US. В справке Delphi даже есть подходящая процедура для этого:

Вы можете посмотреть демонстрационную программу в комплекте демок Delphi: это проект RichEdit, в котором есть три языка (английский, французский и японский) и реализовано переключение между ними в run-time. Вы можете посмотреть, как это делается. Демку можно найти в папке демок. Это либо папка Demos в папке самой Delphi для старых Delphi, либо папка Demos в Моих документах (All users). В меню пуск на неё может быть создан ярлык. Или же вы можете её просто скачать c SVN.

Uned › Блог › Обзор программного обеспечения для мультимарочного сканера Delphi DS150e

В записи Ставим гаражный диагноз с помощью китайского сканера Delphi DS150e я делился первыми впечатлениями от сканера Delphi DS150e. По мотивам заметки возникло два основных вопроса: а чего он умеет и какое ПО с ним используется? Постараюсь ответить на оба.

В комплекте с девайсом идет одноименная программа Delphi DS150E (New VCI) 2014 Release 2 (несмотря на заставку, версия именно эта). Кроме нее, с этим сканером умеет работать Wurth WOW!, в моем случае это версия 5.00.8. Концептуально программы близки, а о нюансах каждой читайте в соответствующем разделе. Сам сканер пришел с прошивкой 1410, в него благополучно была залита 1423. Есть возможность залить версию 1430, что будет сделано несколько позже. Ну и отдельно есть версия протокола eOBD, ее не помню — сто-какая-то.

Общий функционал сканера Delphi DS150e
Независимо от используемого ПО, сканер умеет работать в режиме Generic OBD или eOBD. В этом случае железку не особо интересует какие марки и модели поддерживает программа, она сканирует все доступные блоки (ошибки, данные датчиков). Как правило, это блок ECU — управления двигателем. Т.е. в этом режиме DS150e по-сути аналогичен ELM327.

Гораздо интереснее другой режим, который зависит от используемого ПО (точнее от того, какие протоколы и функции прописаны для конкретных моделей и их блоков управления). Здесь уже доступно сканирование ошибок (и их удаление) и данных по различным системам: панель приборов, SRS, ABS/ESP, блок комфорта, блок управления коробкой и т.п. Кроме того, здесь могут быть доступны сервисные функции, такие как: адаптация, тест исполнительных механизмов, кодирование (например, форсунок в дизельных двигателях или даже прописывание ключей в блок иммобилайзера) и коррекция параметров. Набор получаемых данных и возможности по их корректировке вплотную зависят от поддержки блоков программным обеспечением. С каждым релизом поставляется (как правило, это так, однако в «ломаных» версиях этой информации может и не быть) перечень поддерживаемых моделей и какая функциональность доступна для каждой.

Delphi DS150E 2014 Release 2 (2.14.2.2)
С общими моментами разобрались, давайте поглядим на конкретные программы. Первой осмотрим Delphi DS150E (New VCI). Начну с того, что функциональность программы строго утилитарна и относится к сканеру и функциям выполняемым им: каталог марок и моделей, доступные для взаимодействия системы и — в случаях, когда это требуется — подсказки по выполнению процедур. Хочу заметить, что несмотря на то, что программа имеет русификацию, выполнена она из рук вон плохо (чего стоит кнопка «ОК», переведенная как «В норме»). Проще использовать английский вариант, там хотя бы возможно нагуглить однозначный и правильный вариант перевода термина.

Основное окно включает в себя верхнюю менюшку, кнопку режима eOBD в верхнем правом углу, четыре кнопки по левому краю и еще три внизу справа. В центре открываются соответствующие окошки.

Собственно, первые две кнопки слева, по сути, переключают представление каталога: последовательный выбор Марка-Модель-Год или в виде древовидной структуры. В первом случае можно выполнить поиск по VIN-коду (вместо ручного поиска по каталогу, программа считывает данные с автомобиля и определяет его автоматически), зато во втором доступна информация о типе кабеля/разъема, размещении блоков управления и диагностического разъема. Третья кнопка позволяет открыть историю диагностических операций, а четвертая — расположенная внизу — закрывает программу.

Кнопки в правом нижнем углу (слева направо) позволяют: запустить сканер в режиме «сбора данных» (в этом случае постоянное подключение к ПК не требуется), просканировать все системы в режиме ISS или просканировать конкретную систему. Последние две кнопки, соответственно, активны либо когда выбран режим ISS (Intellectual System Scan) — здесь нужные блоки выбираются в диалоге, либо когда выбрана конкретная система (двигатель, тормоза и т.п.). После проверки конкретной системы левая панель меняет свой вид, позволяя читать/стирать ошибки, просматривать т.н. измеряемые показатели и осуществлять настройку/адаптацию/кодирование систем.

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

Иллюстрированный самоучитель по Delphi 7 для начинающих

Начало работы

Запускается Delphi обычным образом, т. е. выбором из меню Borland Delphi 7 команды Delphi 7 (рис. В6).

Рис. В6. Запуск Delphi

Вид экрана после запуска Delphi несколько необычен (рис. В7). Вместо одного окна на экране появляются пять:

  • главное окно – Delphi 7;
  • окно стартовой формы – Form 1;
  • окно редактора свойств объектов – Object Inspector;
  • окно просмотра списка объектов – Object TreeView;
  • окно редактора кода – Unitl.pas.

Окно редактора кода почти полностью закрыто окном стартовой формы.

Рис. В7. Вид экрана после запуска Delphi

В главном окне (рис. В8) находится меню команд, панели инструментов и палитра компонентов.

Окно стартовой формы (Forml) представляет собой заготовку главного окна разрабатываемого приложения.

Программное обеспечение принято делить на системное и прикладное. Системное программное обеспечение – это все то, что составляет операционную систему. Остальные программы принято считать прикладными. Для краткости прикладные программы называют приложениями.

Рис. В8. Главное окно

Borland delphi 4 0 для начинающих повторное использование приложений

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

Состав Delphi и требования к системе

Прежде, чем приступать к работе с какой-либо программой, было бы полезно ознакомиться с ее требованиями к компьютеру. Разумеется, требования у разных версий Delphi разнятся, постепенно повышаясь от версии к версии. В частности, в рассматриваемой нами Delphi 7 рекомендуется процессор не ниже Pentium II и не менее 256 Мбайт оперативной памяти. Более ранние версии требовали меньший объем памяти, однако для комфортной работы я в любом случае рекомендовал бы не менее 256 Мбайт, а для Delphi 7 и выше, да еще и под управлением ОС Windows XP, не помешало бы иметь 512 Мбайт ОЗУ.

Что касается требований к операционной системе, то хотя формально Delphi может работать на любой 32-разрядной версии Windows, я бы настоятельно рекомендовал использовать Windows из линии NT, т.е. Windows 2000 или XP. Дело в том, что Windows 9x, из-за своего 16-разрядного наследия, имеет серьезные ограничения на количество доступных системных ресурсов, вне зависимости от того, насколько мощный ПК вы используете. Кроме того, Windows 9x не может эффективно задействовать даже относительно большие — свыше 128 Мбайт — объемы оперативной памяти. Я уже не говорю о том, что в Windows 9x не поддерживаются ни многопоточность, ни набирающие в последнее время популярность двуядерные процессоры, а производители аппаратных компонентов ПК давно уже забросили оптимизацию драйверов для данного семейства ОС. Результатом всего этого является низкая производительность на современных компьютерах и вполне ощутимый риск «повесить» систему в процессе работы над сложным и ресурсоемким приложением.

Еще один важный вопрос — это монитор. Опять-таки, формально достаточно любого SVGA-монитора. Но работать в среде Delphi при разрешении экрана ниже, чем 1024 на 768 точек, крайне затруднительно: учтите, что вам постоянно надо видеть как элементы управления самой Delphi, так и собственное (разрабатываемое) приложение. Для комфортной работы я бы рекомендовал качественный 19″ монитор с рабочим разрешением 1280 на 1024 точки. Причем, если это будет обычный монитор на ЭЛТ (или даже ЖК, но с аналоговым подключением), то вам понадобится еще и качественная видеокарта, способная обеспечить кристально четкую, без «замыливания» картинку. Для ЭЛТ-мониторов также важно обеспечивать поддержку указанного разрешения при частоте регенерации изображения не ниже 85 Гц.

ПРИМЕЧАНИЕ
Помните, что программирование — это напряженная работа с текстом. И если ваша связка «видеокарта-кабель-монитор» не может выдать четкий текст и (или) отсутствие видимого мерцания в нужном вам разрешении, то со временем вы рискуете испортить себе зрение.

Определившись с компьютером, перейдем к установке. В процессе установки про-грамма спросит вас, для каких версий тех или иных третьесторонних приложений следует устанавливать компоненты. Прежде всего, это версии MS Office, для одной из них вы сможете установить набор компонент, обеспечивающих взаимодействие между приложениями office и Delphi. Если вы устанавливаете старшую версию Del-phi (Client/Server, Enterprise, Architect), то вас спросят еще и о том, для каких версий баз данных следует установить компоненты. Наконец, в процессе установки, помимо самой Delphi будут установлено множество дополнительных программ, в основном, связанных с базами данных. Причем некоторые из них (например, сервер InterBase или виртуальная Java-машина) вообще устанавливаются отдельно, хотя и в процессе общего хода инсталляции.

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

  • Image editor — простой графический редактор для рисования иконок и курсоров. За время, прошедшее с момента последнего обновления (в 1996 году), морально устарел, но может пригодиться, если нет ничего другого;
  • WinSight — позволяет просматривать отладочную информацию в любых работающих приложениях;
  • BDE Administrator — позволяет настраивать базы данных;
  • Data Pump — позволяет переносить данных между БД;
  • Database Explorer или SQL Explorer — средство просмотра БД;
  • SQL Monitor (только старшие версии) — позволяет отслеживать обращения приложений к SQL-серверу.

Кроме того, в этой группе будет находиться подгруппа Help, а в ней, среди множества справочных файлов, — еще одна, с еще большим их количеством — MS SDK Help Files. Так вот, все эти файлы вам придется регулярно использовать, причем положение усугубляется не только их количеством и объемами, но и тем, что в русском варианте их не существует. Таким образом, знание английского языка будет вам хорошим подспорьем при изучении как Delphi, так и программирования вообще.

СОВЕТ
Если вы не знаете английского, но владеете немецким или французским, то вы можете установить версию Delphi на том языке, который знаете лучше. Русских версий Delphi, равно как и других серьезных средств разработки, нет, никогда не было, и, увы, даже не предвидится.

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

Интегрированная среда разработки

Интегрированная среда разработки Delphi (Delphi IDE) является многооконной системой. Она включает в себя все необходимое для быстрой разработки Windows-приложений, и может гибко настраиваться.

Тем не менее, как и всякая другая программа, Delphi имеет некоторый стандартный, предусмотренный разработчиками вид, в котором она предстает вам при первом запуске. В таком «стандартном» варианте среда Delphi имеет 6 окон (рис. 2.1). Это: главное окно (Delphi 7 — Project1), окно дерева объектов (Object TreeView), окно инспектора объектов (Object Inspector), окно конструктора форм (Form1), а так же совмещенное окно редактора кода и проводника кода (на заднем плане, под Form1). При этом окно проводника пристыковано к левому краю окна редактора. Впрочем, ничего не мешает отсоединить проводник от редактора, или, наоборот, состыковать все окна, кроме главного и конструктора форм, в одном окне, или объединить их по какому-либо иному принципу.

Рис. 2.1. Вид Delphi 7 IDE по умолчанию

К вопросу об удобстве следует отметить, что предлагаемая разработчиками компоновка годится, в принципе, для любого экранного разрешения. Но если у вас имеется возможность установить разрешение экрана в значение 1280 на 1024 точки, то вы можете скомпоновать все кнопки главного окна в одной строке, а все освободившееся внизу место выделить для палитры компонентов (рис. 2.2).

Рис. 2.2. «Оптимизированный» вид главного окна Delphi

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

Содержание и предназначение панелей инструментов, имеющихся в начальном виде, следующее:

  • Debug — отладка. Позволяет запустить программу (Run), приостановить ее выполнение (Pause), а так же выполнять построчное выполнение программы;
  • Standard — стандартные. Служит для таких операций, как сохранение, созда-ние, добавление и удаление файлов;
  • View — вид. Используется для быстрого нахождения форм и файлов проекта;
  • Desktops — рабочая среда. С помощью этих инструментов можно переклю-чаться между различными настройками рабочей среды Delphi;
  • Custom — произвольная. Изначально содержит одну-единственную кнопку — для вызова справки;
  • Component palette — палитра компонентов. Содержит все доступные для разработки приложений компоненты.

Отметим, что все инструментальные панели настраиваются: кнопки можно перемещать между панелями, добавлять на них новые, или же удалять. Для обычных панелей (Standard, View, Debug) это делается точно таким же образом, как во многих других современных Windows-приложениях (например, как в Word, т.е. при помощи окна настройки — Customize).

Что касается самой большой панели — палитры компонентов, то для ее настройки следует использовать специальное окном свойств палитры (рис. 2.3). Это окно доступно через пункт Configure Palette из меню Component. Однако учтите, что при настройке важно знать как предназначение компонент, так и понимать принципы их организации, поэтому максимум, что можно себе позволить для начала — это поменять местами группы, перетаскивая их в списке страниц (Pages).

Рис. 2.3. Настройка палитры компонентов требует знания VCL

ПРИМЕЧАНИЕ
Следует учитывать, что поскольку палитра компонентов является ничем иным, как визуальным представлением VCL, то ее вид и состав могут меняться в зависимости от того, какие модули подключены, устанавливались или нет дополнительные компоненты или их наборы, и т.д. В любом случае, в начале изучения Delphi, экспериментов в этой области лучше не производить.

Все компоненты сгруппированы по вкладкам, число и состав которых несколько разнятся в зависимости от версии и варианта поставки. Так, в Delphi 7 Enterprise имеется 33 вкладки, содержащие компоненты, принадлежащие к той или иной группе VCL (табл. 2.1).

Brullworfel

Нашел в интернете много способов реализации на запрет запуска второго экземпляра приложения. Выбрал самый на мой взгляд минималистский. Я думаю, может многим понадобится — вообще применяется это достаточно часто.

Итак, нужно открыть исходный код главного файла проекта (меню Project — View Source). В секцию uses добавляем библиотеки Windows и Dialogs:

В секцию Var (переменные, если нет такой — создаем):

Теперь, непосредственно перед строкой:

Добавим нашу проверку, не запущен ли уже другой экземпляр программы:

H := CreateMutex(nil, True, ‘уникальная фраза’);
if GetLastError = ERROR_ALREADY_EXISTS then
begin
showmessage(‘Программа уже работает!’);
Exit;
end;

‘уникальная фраза’ — это что-то например «и64ерм9со46к79826о» — в общем то, что наверняка будет использовать только Ваша программа. Можно также использовать,например, название программы.

Pro-Delphi

Научиться программировать не так сложно, как кажется. Уроки по принципу от простого к сложному. Исходные тексты программ. Видео уроки.

Страницы

среда, 30 марта 2011 г.

Урок 1. Hellow World с изюминкой (блокировка запуска второй копии приложения Delphi)

  • Сайт wosoft.ru, где, кроме всех прочих полезностей и прелестей, в разделе Программы, образование, Справочники и энциклопедии, Вы можете найти книжку для начинающих, которая так и называется: «Учебник по Дельфи для чайников». Это – для тех, кто еще… сами понимаете…
  • Сайт delphibook.com, на котором также можно найти книги. В частности, я бы рекомендовал книги Архангельского. Вообще-то, всегда при выборе книги, рекомендую читать аннотацию, расположенную на обороте самой первой страницы. Там всегда указывается для кого предназначена эта книга: для начинающих или для профессионалов.
  • Очень много книг и статей на сайте RSDN.ru. Здесь Вы найдете весьма и весьма полное руководство «Программирование на языке Delphi». (Очень надеюсь, что авторы пошутили, поскольку такого языка не существует). Здесь подробно и наглядно рассказывается, как управлять средой разработки Дельфи, например в разделе «Проект приложения».
  • На следующем сайте, озаглавленном warayg.narod.ru (имеет ли название какое-то отношение к варягам не знаю), также можно найти неплохие, очень компактные, без воды пособия для начинающих и профи.
  • Настоятельно рекомендую вот эту ссылку: HelloWorld.ru – справочник по функциям. Аналогичная книга Сергея Свистунова уже много лет не переиздавалась, к сожалению. Здесь все удобно разложено по категориям. Множество хороших примеров.
  • Сайт SQL.ru просто не могу обойти вниманием. Это – копилка, это мощнейший живой форум. Однако, будьте готовы к тому, что на поиск ответа на любой вопрос вам придется потратить уйму времени.
  • DelphiExpert.ru – как Вы можете судить из меню слева – книги, программы, исходники, компоненты. Я же хочу обратить Ваше внимание на пункт меню «Видео уроки». Это как раз то, что нужно начинающим. Хотя материал неважно систематизирован, нарушен принцип от простого к сложному, но посмотреть не помешает.
  • И последняя ссылка на сайт Dcomponents.nsrod.ru – неплохой справочник (не учебник) по созданию компонентов.

6 комментариев:

Спасибо! Попробовал в Delphi 2010. Но если не убрать <$R *.res>, то выдает сообщение:[DCC Error] E1026 File not found: ‘Unit1.res’. Если убрать, срабатывает:
procedure TForm1.FormCreate(Sender: TObject);
begin
if Check then Halt;
end;

(Дополнение к предыдущему комментарию.) Днем на свежую голову разобрался, почему не получалось сделать, как здесь написано. Кое-что пришлось исправить. Во-первых, в созданном в начале проекте(и далее везде) заменил Form2 на Form1, вернее, само так создалось. Затем вместо параметра ‘MyProg’ (в описании функции Check) вставил ‘HW_Proj’- имя сохраненного проекта. Кстати, скопированные кавычки компилятор не принял, пришлось вручную впечатать. После этого все заработало, т.е. запуск второй копии стал невозможен. Благодарю автора за полезную «изюминку»!

Сергей, извините, что сразу не ответил. Увы, обстоятельства.
Спасибо Вам за проявленный интерес, за комментарии. Я рад, что Вы самостоятельно разобрались. Уверен, что полученные самостоятельно знания лучше тех, которые преподносят со стороны.
К сожалению, в настоящий момент не располагаю временными ресурсами для продолжения цикла статей, хотя продолжаю вынашивать планы. Например, можно было бы на примере околобухгалтерской программы «Расходы» разобрать процесс создания плагинов или познакомиться с технологией oom. Но, вернувшись с небес на землю, могу лишь предложить Вам: пишите, если будут вопросы, я обязательно постараюсь на них ответить.
Удачи Вам.

Огромное спасибо вам!
Не собираетесь ли написать больше про бухгалтерский учет- например, как создать аналитические разрезы и т.д.
Или, может быть, укажите источник где подробно описана эта тема.
Спасибо!

Мне очень приятно, что цикл статей, написанный много лет назад до сих пор актуален.
Однако, тему я считаю исчерпанной, и на текущий момент я не предполагаю «двигать науку вширь» — как говорил один из моих преподавателей.
Спасибо за интерес, за комментарий. Да, поможет Вам интернет.

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

Вот, к примеру у Вас есть несколько поставщиков (обозначим их П1, П2, П3 для краткости). Тогда Вам не следует учитывать все взаимоотношения с ними на 60 счёте. Нужно создать аналитические счета: 60-1 — расчёты с П!, 60-2 — расчёты с П2 и 60-3 — расчёты с П3. Для составления баланса Вам потребуется собрать все обороты и посчитать остатки по 60 счёту, но сделать это нужно будет собрав обороты и посчитав остатки по всем счетам, начинающимся с «60», т.е. по трём счетам. А для аналитических отчётов (например, отчёт, показывающий взаимоотношения с конкретными поставщиками, Вам нужно будет собирать обороты по каждому из трёх аналитических счетов отдельно. Обычно и тот и другой расчёт размещают в одной функции.

Илон Маск рекомендует:  ins в HTML
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL