пятница, 30 августа 2013 г.

Объекты автоматизации

Перевод раздела Automation Objects (Win32 Only) из справочной системы Delphi

Объект, класс которого поддерживает интерфейс IDispatch (объявлен в модуле System), является объектом автоматизации (Automation object).

Для обращения к объектам автоматизации следует использовать переменные типа вариант. Когда переменная типа вариант ссылается на объект автоматизации, с ее помощью вы можете вызывать методы этого объекта, читать и записывать значения его свойств. Для того чтобы сделать это, подключите модуль ComObj в раздел uses вашей программы или библиотеки.

Обращение к интерфейсам

Перевод раздела Interface References из справочной системы Delphi

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

Реализация интерфейсов

Перевод раздела Implementing Interfaces из справочной системы Delphi

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

Интерфейсы объектов

Перевод раздела Object Interfaces (Delphi) из справочной системы Delphi

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

пятница, 12 апреля 2013 г.

Кросс-платформенные библиотеки

Перевод раздела Cross-Platform Shared Libraries из справочной системы Delphi

Совместное использование библиотек в приложениях Mac OS X

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

  • Имена динамически загружаемых функций должны начинаться с нижнего подчеркивания ('_').
  • Инструкции exports должны быть перемещены из файлов .dpr в файлы .pas.

Эти два правила разъясняются далее.

Пакеты

Перевод раздела Packages (Delphi) из справочной системы Delphi

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

Разработка динамически загружаемых библиотек

Перевод раздела Writing Dynamically Loaded Libraries из справочной системы Delphi

Замечание: Библиотеки в части экспорта ограничены значительно больше, чем пакеты. Библиотеки не могут экспортировать константы типы и обычные переменные. То есть класс, объявленный в библиотеке, не может быть виден в программе, которая ее использует.

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

Библиотеки и пакеты

Перевод раздела Libraries and Packages (Delphi) из справочной системы Delphi

Динамически загружаемые библиотеки – это библиотеки динамического связывания (dynamic-link library (DLL)) под Windows или DYLIB на Mac. Они представляют собой подборку подпрограмм, которые могут вызываться приложениями или другими библиотеками. Как и модули, динамически загружаемые библиотеки содержат программный код или ресурсы, предназначенные для совместного использования. Однако этот тип библиотеки компилируется отдельно и связывается с использующей его программой во время ее выполнения.

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

понедельник, 25 марта 2013 г.

Ввод/вывод. Стандартные подпрограммы

Перевод раздела Standard Routines and Input-Output из справочной системы Delphi


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

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

суббота, 19 мая 2012 г.

Перегрузка операторов

Перевод раздела Operator Overloading из справочной системы Delphi

О перегрузке операторов

Delphi для Win32 разрешает перегрузку некоторых функций или "операторов" внутри объявления записей. Имя функции оператора сопоставляется в программном коде с его символьным представлением. Например, оператор Add сопоставляется с символом + . Компилятор генерирует вызов соответствующего перегружаемого оператора, сопоставляя контекст (то есть возвращаемый тип и тип параметров, использованных при вызове) с сигнатурой функции оператора.

Вложенные типы

Перевод раздела Nested Type Declarations из справочной системы Delphi

Объявление вложенных типов

Объявления типов могут быть вложены в объявление класса. Вложенные типы часто используются в объектно-ориентированном программировании. Они дают возможность не разделять концептуально связанные типы и избежать конфликтов имен. Синтаксис объявления вложенных типов может быть использован и при работе с компилятором Delphi для Win32.

Классы и записи - помощники

Перевод раздела Class and Record Helpers из справочной системы Delphi

О классах и записях - помощниках

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

Исключения (исключительные ситуации)

Перевод раздела Exceptions из справочной системы Delphi

Об исключениях

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

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

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

Перевод раздела Class References из справочной системы Delphi

Тип ссылки на класс

Тип ссылки на класс иногда называют метаклассом, а его объявление имеет вид:

class of type

где type – это любой класс. Идентификатор type обозначает значение, тип которого – это тип класса. Если type1 является предком type2, тогда тип class of type2 совместим по присваиванию с типом class of type1. То есть:

Трудности перевода (Часть 2)

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

четверг, 3 мая 2012 г.

События

Перевод из справочной системы Delphi. Оригинал: Events

О Событиях

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

Свойства

Перевод из справочной системы Delphi. Оригинал: Properties

О свойствах

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

среда, 2 мая 2012 г.

Методы

Перевод из справочной системы Delphi. Оригинал:Methods

Метод – это процедура или функция, связанная с классом. При вызове метода определяется объект (или, если это метод класса, то класс) с которым должен работать метод. Например, SomeObject.Free вызывает метод Free объекта SomeObject.

суббота, 28 апреля 2012 г.

Примеры простых программ на Lazarus под Win32 (Часть 2)

В этом посте я расскажу о своем первом опыте по работе с базами данных в Lazarus.

Как я уже писал в первой части, задача была подключиться к удаленной базе данных MySQL, извлечь оттуда данные и записать их в CSV.

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

воскресенье, 25 марта 2012 г.

Анонимные методы в Delphi

Перевод из справочной системы Delphi

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