Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы Delphi в Builder C++, как использовать? 
:(
    Опции темы
Bitter
Дата 19.5.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: нет
Всего: 27



Всем привет.
Нужно использовать классы, написанные на Delphi, в Builder c++. Как это можно сделать без переписывания кода?
Я так понимаю, что DLL не может экспортировать классы, а тогда как?
Спасибо
PM MAIL ICQ Skype   Вверх
CodeMonkey
Дата 19.5.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Берёте и используете. C++ Builder может компилировать pas-файлы Delphi. И структура классов у них одна и та же.
DLL классы экспортировать может, но надо понимать, что этим вы жёстко привязываетесь к компилятору (иногда - к конкретной версии компилятора). Если ищите универсальности - используйте вместо классов интерфейсы.

Добавлено через 1 минуту и 3 секунды
Возможно, вам будет интересно это (и далее по ссылкам).


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Bitter
Дата 19.5.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: нет
Всего: 27



Спасибо за ссылку, обязательно почитаю. А на счет компиляции pas в  Builder хочу уточнить: 2009й откомпилит пасы Delphi7? И как вообще их там компелировать?

PM MAIL ICQ Skype   Вверх
Alexeis
Дата 19.5.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(CodeMonkey @  19.5.2009,  15:08 Найти цитируемый пост)
DLL классы экспортировать может, но надо понимать, что этим вы жёстко привязываетесь к компилятору (иногда - к конкретной версии компилятора). Если ищите универсальности - используйте вместо классов интерфейсы.

  Как базовый механизм Windows не может, но C++ (MSVC) прекрасно умеет экспортировать классы в Dll, просто каждый метод экспортируется как функция, в экзешнике подставляются адреса этих функций так как будто они родные.
  В Delphi такого механизма нет, его заменили механизмом bpl. Возможно экспортируемые классы в bpl Delphi будут понятны билдеру, но должна соответствовать версия VCL, т.е. Builder 2006/Delphi 2006 . Такой механизм не гарантируется производителем, но теоретически может работать. 
  Правильнее всего
Цитата(CodeMonkey @  19.5.2009,  15:08 Найти цитируемый пост)
Если ищите универсальности - используйте вместо классов интерфейсы.


Ну или COM...


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bitter
Дата 19.5.2009, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: нет
Всего: 27



Alexeis, мне нужно использовать не VCL классы, а обычные написанные мной (например для работы с математикой), я так понял, что их можно запихнуть в bpl, а builder вытащить? А если версия Builder старше?
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 19.5.2009, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Bitter @  19.5.2009,  15:59 Найти цитируемый пост)
Alexeis, мне нужно использовать не VCL классы, а обычные написанные мной (например для работы с математикой), я так понял, что их можно запихнуть в bpl, а builder вытащить?

   В Delphi все наследуется от TObject, в С++ Builder изначально не наследуется от TObject, поэтому боюсь чтобы использовать в программе на билдере, придется написать маленький pas модуль на паскале для билдера. У билдера есть директива PascalImplementation, которая и обеспечивает совместную компиляцию с делфийскими классами. Впринципе, TObject мало меняется от версии к версии, но у них (bpl и exe) должна быть общая RTL библиотека времени исполнения, вот она скорее всего и не подойдет.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bitter
Дата 19.5.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: нет
Всего: 27



Увидел, что PascalImplementation действительно используется повсюду д Билдере. Только вот не могу понять сам принцип.

Alexeis, знаешь как ей пользоваться? То есть мне нужно dcu подсунуть как-то или pas или чё?
PM MAIL ICQ Skype   Вверх
CodeMonkey
Дата 19.5.2009, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Если вы что-то откомпилите 2009м, то и воспользоваться можете только им - там сильно TObject поменялся. Вообще, если чувствуете, что плаваете в этой теме - лучше бы всё же использовать интерфейсы, а то такого наворотите, что сами испугаетесь (а уж отлаживать эти баги потом...).

Добавлено через 3 минуты и 6 секунд
2Alexeis:
Признаться, я вопрос прочитал как "function GetClass: TMyClass; external 'MyLib.dll';". В любом случае, bpl - это те же DLL, только что с Initialize/Finalize.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Bitter
Дата 19.5.2009, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: нет
Всего: 27



Та да, плаваю, потому, что первый раз приходится совмещать работу разных программистов.
Ладно, всем спасибо, буду пытаться интерфейсами как-то всё замутить.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.