![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| foRaver |
|
||||||||||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 561 Регистрация: 6.7.2003 Где: Düsseldorf Репутация: нет Всего: 3 |
Знакомство с DELPHI 8
Ограниченная поддержка технологии .NET была реализована еще в предыдущей версии Delphi 7 Studio. Однако в этой версии .NET могла и не использоваться. Версия Delphi 8, напротив, не может не использовать эту технологию. Для совместимости с предыдущими версиями в ней используются пространства имен Borland.VCL.XXXX, позволяющие ценой небольших изменений исходного кода в версии 8 компилировать и исполнять программы, написанные в предыдущих версиях. Однако, такая совместимость - мнимая, так как компилятор новой версии порождает инструкции языка СIL, которые могут исполняться только под управлением CLR. В этом разделе кратко рассматриваются новые возможности Delphi, связанные с переходом на новую технологию .NET. Устаревшие и новые средства Delphi Это, пожалуй, самая болезненная проблема для совместимости с ранними версиями. Прежде всего, речь идет об указателях. Указатели считаются небезопасным типом, так как код, содержащий указатели, нельзя проверить на безопасность. Запрещена любая арифметика указателей, а также обращение к функциям и процедурам New, Dispose, GetMem, FreeMem и ReallocMem. Вместо концепции указателей программы должны использовать два класса из CTS: IntPtr и Marshal. Первый - суть универсальный платформеннонезависимый указатель, открывающий доступ к механизму межплатформенного взаимодействия P/Invoke. Второй осуществляет маршализацию данных, то есть низкоуровневое взаимодействие процессов, включая упаковку/распаковку передаваемых данных. В следующем примере создается и используется указатель для размещения в нем целого числа.
апрещены типизированные и нетипизированные файлы. Безопасный код может использовать только текстовые файлы типа FileVar: TextFile. Для работы с не текстовыми файлами рекомендуется использовать объекты класса TFileStream. Например, следующая программа создаст файл, содержащий 5 случайных вещественных чисел.
Записи не могут содержать вариантную часть, но могут - методы (см. ниже). В .NET Framework используются "широкие" символы (2 байта на символ). В связи с этим небезопасным считается тип PChar, который используется как ссылка на массив однобайтных символов. В то же время формат типов String в Delphi и CTS совпадает. Поскольку тип PChar в программах Delphi используется, в основном, при обращении в функциям API, вместо PChar следует использовать класс StingBuilder. Следующая программа прочитает заголовок активного окна:
Устаревшие возможности кода Компилятор Delphi отныне не поддерживает встроенный ассемблер и директивы asm. Запрещено использовать функции прямого доступа к памяти, такие как BlockRead, BlockWrite, GetMem, FreeMem, ReallocMem, а также директиву absolute и функцию addr. Поддерживается операция @ (получение адреса). Новые возможности Delphi Как уже отмечалось, записи не могут иметь вариантных частей, но могут - процедуры и функции. Это в какой-то степени сближает их с классами. Вот пример объявления:
Несмотря на похожесть, записи, конечно, не классы - в них нет механизмов наследования и полиморфизма. .NET позволяет интегрировать в единое целое код, написанный на разных языках, в которых используются, в общем случае, разные ключевые слова. Как быть, если в CTS определен класс, совпадающий с ключевым словом? В Delphi для этого можно использовать стандартный прием - составное имя. Например:
Однако "путь" к классу может быть достаточно длинным, и составное имя окажется громоздким. В этом случае Delphi разрешает перед именем класса ставить символ "&" (амперсанд):
Встретив такое описание, компилятор станет просматривать список доступных модулей в поисках типа Type и найдет его в модуле System. Существенным изменениям подверглось объявление класса. Дело в том, что Delphi и CLR по-разному трактуют области видимости секций private и protected: в Delphi члены, объявленные в этих секциях, видны всюду в пределах данного модуля. В CLR секция private объявляет члены, доступные только внутри методов класса, а секция protected - члены, доступные потомкам класса. В связи с этим, в Delphi перед названиями секций следует ставить спецификатор class - в этом случае области видимости в Delphi и CLR совпадут:
Классы можно лишить потомков, а виртуальный метод - возможности перекрытия. Для этого объявление класса сопровождается директивой sealed, а объявление метода - директивой final:
Приведенный выше пример лишь иллюстрирует синтаксис объявлений и по существу бессмыслен: если класс не имеет потомков, то ни один его метод не может быть перекрыт. Замечу, что следующее объявление ошибочно:
Можно лишить возможности перекрывать только виртуальные методы, то есть объявленные с директивами dynamic, virtual или override. Две модели Windows-приложений Несмотря на то, что Delphi теперь всего лишь один из языков, поддерживающих .NET, сама система программирования Delphi имеет богатую историю, и миллионы программистов до сих пор с удовольствием работают с ней. Учитывая это, разработчики Delphi обеспечили максимально возможную совместимость (пусть - мнимую, см. выше) новейшей версии с предыдущими. С этой целью они создали пространства имен Borland.VCL.XXXX, почти полностью имитирующие библиотеку компонентов VCL (Visual Component Library - библиотека визуальных компонентов) предыдущих версий. В эти пространства имен вошли VCL-классы, хорошо известные по предыдущим версиям - TApplication, TForm, TButton, TCheckBox и т. д. Символы ХХХХ в названиях пространств имен совпадают с именами соответствующих модулей VCL. Например, пространство имен Borland.VCL.DB содержит классы, определенные в модуле DB библиотеки VCL (клас-сы для работы с базами данных). Класс TForm определен в пространстве имен Borland.VCL.Forms, в этом же пространстве определен класс TApplication, класс TButton - в пространстве имен Borland.VCL.StdCtrls, в этом пространстве объявлен также класс TCheckBox и т. д. Пространства имен Borland.VCL.XXXX являются прозрачными надстройками над пространствами имен классов, входящих в .NET Framework, но не закрывают их. Это означает, что вам доступны и классы .NET Framework. Чтобы создать Windows-приложение, базирующееся на классах .NET Framework, вы выбираете команду меню File > New > Windows Forms Application, для создания VCL-подобного приложения - команду File > New > VCL Forms Application. Работа с базами данных Отличительной особенностью системы программирования Delphi была и остается встроенная в нее возможность работы с различными промышленными базами данных (БД). Добрая треть компонентов VCL в Delphi 7 в той или иной степени связаны с созданием приложений для работы с БД. В .NET Framework встроена архитектура ADO.NET, решающая аналогичные задачи. Упрощенная схема этой архитектуры показана на рис. ![]() На этой схеме Источник данных - физическая БД или XML-файл с данными. Провайдер данных обеспечивает связь с Источником данных и передает ему команды. Набор данных предназначен для отображения данных. С любым источником данных (ИД) могут быть связаны один или несколько наборов данных (НД) и наоборот - единственный НД может отображать данные из нескольких ИД. Провайдер данных, входящий в архитектуру ADO.NET, обеспечивает взаимодействие наборов данных с такими ИД, как MS SQL Server, OLE DB и Oracle. В Delphi 8 можно использовать также провайдер BDP.NET (Borland Database Provider for .NET - провайдер баз данных корпорации Borland для .NET), который обеспечивает взаимодействие с серверами DB2, Oracle и InterBase. Дублирование в BDP.NET связи с промышленным сервером Oracle не случайно: корпорации Borland и Oracle связывает многолетнее плодотворное сотрудничество5. По оценкам разработчиков Delphi, управление сервером Oracle с помощью BDP.NET дает определенные преимущества по сравнению с управлением через провайдер ADO.NET. Наличие BDP.NET не ограничивает новаторского подхода разработчиков Delphi к интеграции с технологией .NET Framework. Связано это с тем, что изначально Delphi тяготела к приложениям для работы с БД в значительно большей степени, чем разработанная в Microsoft технология ADO (Active Data Object - активный объект данных), которая и легла в основу ADO.NET. Delphi 7, например, поддерживала такие технологии, как BDE (Borland Database Engine - машина баз данных корпорации Borland; обеспечивала доступ к файл-серверным БД на таблицах Paradox, dBASE и т. п.), dbExpress (набор скоростных драйверов для непосредственного доступа к некоторым промышленным серверам, в том числе - к MySQL), IBX (доступ к серверу InterBase на уровне его API-функций), DataSnap (разработка многозвенных СУБД) и ряд других. Delphi 8 определяет естественную миграцию этих технологий в новую среду. Для этого в ее состав включены такие дополнительные технологии:
Поддержка этих технологий доступна только в режиме разработки VCL Forms Application. Работа с Интернет Работа с Интернет никогда не была в Delphi столь же эффективной, как работа с БД. И хотя уже в Delphi 2 была вкладка Internet (компоненты FTP, HTML, POP и т. д.) поддержке Интернет в Delphi всегда не хватало некоторой системности. Даже многочисленные компоненты Indy в Delphi 7 годятся лишь на то, чтобы создать "самопальный" Outlook Express или скромный Web-браузер. В то же время в Microsoft разработали технологию ASP (Active Server Pages - активные страницы сервера), которая во многом упрощала актуальную ныне задачу создания интерактивных Web-сайтов (например, для электронной торговли товарами и услугами)6 . Технология ASP вошла в .NET Framework в виде ASP.NET и в полной мере доступна в Delphi 8. Для использования технологии ASP.NET на хостинге (то есть на машине, на которой развернут сайт) должен функционировать сервер Microsoft IIS (Internet Information Server - информационный сервер для Интернет корпорации Microsoft), а сам хостинг работать под управлением Windows 2000/ХР. Основой технологии являются компоненты Web-страниц, на которых размещаются серверные управляющие компоненты и HTML-текст. Страницы содержат внутренний код, обеспечивающий логику работы, и поддерживаются скомпилированными DLL. Когда пользователь впервые обращается к активной странице, ASP.NET автоматически создает и компилирует DLL, которая в конечном счете передает пользователю HTML-код. Этот код способен исполняться в браузере клиента. В результате значительная часть работы по взаимодействию клиента с сервером выполняется на машине клиента, что повышает пропускную способность хостинга. Активные страницы помимо HTML-текста могут содержать различные серверные элементы управления, например, обеспечивающие необходимую идентификацию пользователя, а также специализированные компоненты, такие как календарь, решетка с данными, навигатор, списки и т. п. Внутри .NET Framework активные страницы получают доступ к данным через ADO.NET c "родным" провайдером или BDP.NET. © www.delphikingdom.com |
||||||||||||||||||
|
|||||||||||||||||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 6 Всего: 137 |
||||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |