Как вы, возможно, знаете, c++builder вырос из delphi. Большая часть того, что есть в c++builder, пришла напрямую из delphi. Иногда это может быть разочаровывающим, но, тем не менее, есть некоторые преимущества. Имеется большое количество доступного кода на delphi, который может быть серьезным подспорьем в разработке приложений на c++builder. В некоторых случаях этот код может быть использован непосредственно. В других случаях код может быть преобразован для использования в c++builder. Более того, существуют много компонентов delphi, для которых не существует их аналогов в c++builder.
В c++builder есть встроенный компилятор паскаля. Компилятор паскаля позволяет вам использовать код delphi в c++builder'е. Он может также помочь в конвертации кода из delphi в c++builder. Компилятор паскаля доступен как из ide c++builder, так и из командной строки. Непосредственное использование модулей delphi
Часто вы будет обнаруживать проекты delphi, содержащие модуль, который бы вы хотели использовать в своих приложениях. Простейшим путем использования модуля delphi является его добавление в проект. Ниже приведены шаги, необходимые для добавления модуля delphi в проект c++builder'а:
1. Создайте в c++builder'е свой проект. 2. Выберите "add to project" в панели c ++ builder 'а или в меню. 3. Выберите "pascal unit" в типах файлов выпадающего списка диалогового окна открытия файлов. 4. Выберите модуль delphi для добавления в свой проект и нажмите ok. 5. Перестройте свое приложение перед написанием кода, ссылающегося на модуль delphi. Перестройка проекта создаст из модуля заголовок, который вы сможете включить в свое приложение. 6. Выберите пункт "file | include unit hdrЕ" в главном меню c++builder 'а и добавьте форму delphi в ваше приложение. 7. Напишите код, который ссылается на модуль delphi.
Когда вы перестраиваете приложение, c++builder использует встроенный компилятор паскаля для создания obj -файла, который приложение сможет использовать. Компилятор паскаля также создает заголовочный файл из исходного текста. Использование этого способа подключения модулей delphi совсем несложно.
Преобразование кода
Как вы можете заметить, добавление модуля delphi в свой проект - это достаточно просто. Тем не менее, вы можете не захотеть использовать модуль delphi таким образом. У вас могут, например, потребовать, чтобы весь ваш код был на c++. В этом случае вы будете должны перевести код паскаля в c++.
Для меня не существует практического способа объяснить каждую деталь преобразования кода delphi в c++. Все, что я могу, тем не менее - это показать, как с легкостью преобразовать сложные объявления паскаля в С++.
Давайте предположим, например, что у вас есть модуль delphi, (очевидно, несколько упрощенный для данного примера), который выглядит следующим образом:
unit testunit; interface type myenum = (meone, metwo, methree); function dosomething(value : myenum) : string; var i : integer; buffer : array [0..255] of char;
implementation function dosomething(value : myenum) : string; begin case value of meone : result := 'one'; metwo : result := 'two'; methree : result := 'three'; end; end; end.
Даже без знания паскаля вы, вероятно, можете справиться с конвертацией этого модуля вручную. Тем не менее, вы можете получить преимущество, используя компилятор паскаля c++builder'а для создания заголовочного файла для этого модуля. Вы могли бы добавить этот модуль в приложение c++builder'а и его откомпилировать, но вы можете также использовать компилятор из командной строки. Вот последовательность действий:
1. Откройте окно командной строки и перейдите к папке, содержащей модуль delphi. 2. В командной строке наберите: dcc 32 - jphn testunit. pas
dcc32.exe - это компилятор паскаля. Ключ -jphn сообщает компилятору о необходимости создать заголовочный и объектный файлы, совместимые с c++builder. По завершению исполнения данной команды будет откомпилирован исходный файл на паскале и будут созданы заголовочный и объектный файлы (объектный файл в данном случае не является значимым, поскольку вы все равно не собираетесь его использовать). Заголовок, сгенерированный для тестового модуля, будет иметь следующий вид (строки комментариев удалены для ясности):
#ifndef testunithpp #define testunithpp
#pragma delphiheader begin #pragma option push -w- #pragma option push -vx #include // pascal unit
#include // pascal unit
namespace testunit {
#pragma option push -b-
enum myenum { meone, metwo, methree }; #pragma option pop
Заметьте, как для вас удобно преобразованы объявления. Вы все еще должны преобразовать настоящий код в модуле, но, по крайней мере, объявления преобразовали за вас. Вот другой пример, только немного сложнее:
const maxsize = maxlongint; type tdoublearray = array[0.. (maxsize div sizeof(double))-1] of double; pdoublearray = ^tdoublearray; tintarray = array[0.. (maxsize div sizeof(integer))-1] of integer; pintarray = ^tintarray;
Сгенерированные объявления выглядят следующим образом:
typedef double tdoublearray[268435455]; typedef double *pdoublearray; typedef int tintarray[536870911]; typedef int *pintarray;
Предыдущие примеры довольно просты. Некоторые объявления паскаля, однако, могут заставить вас почесать голову в удивлении, как преобразовать их в С++. Пример:
Это объявление функции обратного вызова. Когда вы откомпилируете этот модуль компилятором паскаля, вы получите заголовок, который содержит следующее объявление:
typedef int __fastcall (*tmycallback) (const ansistring s, int size);
Возможно, вы с легкостью поняли, как преобразовать код паскаля в это объявление, но это маловероятно, что вы эксперт и в паскале, и в С++. Дело, конечно, в том, что возможность генерации заголовка компилятором паскаля делает простым преобразование любого объявления в паскале в С++.
я могу предложить даже более сложные примеры, но, я думаю, вы уловили суть дела.
Использование компонентов delphi
Есть много условно-бесплатных и бесплатных компонентов, доступных для delphi. В большинстве случаев, авторы компонентов не поставляют их эквивалент в c++builder. Компоненты, поставляемые с исходным кодом на delphi, обычно могут быть использованы с небольшой модификацией или вовсе без нее. Для использования компонента delphi предпримите следующие шаги:
1. Создайте новый пакет для компонента. Обычно вы будете создавать пакет, который будет являться пакетом как времени выполнения, так и времени разработки. 2. Добавьте исходный код компонента в пакет. 3. Перестройте пакет и установите его.
Предполагаю, что этот процесс прост, но многие программисты на c++builder'е не представляют себе, что компоненты delphi могут быть использованы подобным образом.
Заключение
Через интернет доступно большое количество кода delphi. Возможность использовать этот код в ваших приложениях - это, конечно, большое достоинство. Знание, что вы можете использовать этот код и знание, как его использовать - ключ к данному коду.
!!! Мой сайт переезжает, теперь вы можите скачать всё тоже самое на сайте ishodniki.info!!!