суббота, 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

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

Примеры простых программ на Lazarus для Win32 (Часть 1). Резюме.

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

Различия с Delphi 7 на самом деле небольшие (наверняка опять же, пока делаешь, что-то не слишком мудреное). Наверняка люди, берущиеся портировать под Lazarus, испытывают… приятное ;-)

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

Довольно долго не было повода написать что-нибудь про Lazarus. Программированием последнее время я не занимался, но тут, что называется, “приперло”. Надо было сделать быстро, просто и без заморочек. Соответственно, качать пробную XE2 не стал, а решил положиться на бесплатный инструмент.

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

Обо всех этих затеях

четверг, 1 марта 2012 г.

Поля

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

О полях

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

Классы и объекты

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

Тип класс

Класс или тип класса определяет структуру, состоящую из полей, методов и свойств. Экземпляры классов называются объектами. Поля, методы и свойства класса называются его компонентами или членами.

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

суббота, 25 февраля 2012 г.

Объявляемые константы

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

Несколько видов конструкций языка называют "константами". Существуют числовые константы (их также называют числами), строковые константы (их называют символьными строками или строковыми литералами), например, "Hello world!". Все перечисляемые типы определяют константы, которые являются значениями этих типов. Есть предопределенные константы, такие как True, False и nil. Наконец, есть константы, создаваемые объявлением.

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

Переменные

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

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

четверг, 23 февраля 2012 г.

Применение пространств имен в Delphi

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

В Delphi модуль является основным контейнером для типов, а пространство имен – основным контейнером для модулей. В отличии от традиционных модулей Delphi, пространства имен могут встраиваться в иерархическое содержимое. Встроенные пространства имен дают возможность организовать идентификаторы и типы. Они используются для того, чтобы отличать типы, имеющие одинаковые имена. Поскольку пространства имен являются контейнерами для модулей Delphi, с их помощью можно различать модули с одинаковыми именами, находящимися в разных пакетах. Например, класс MyClass, который расположен в MyNameSpace, отличается от MyClass, который расположен в YourNamespace.

Далее рассматриваются следующие темы:

  • Объявление пространства имен и пространство имен проекта по умолчанию;
  • Пространство имен и область видимости;
  • Применение пространств имен в модулях Delphi.

среда, 22 февраля 2012 г.

Идентичность и совместимость типов данных

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

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

  • Идентичность типов
  • Совместимость типов