Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интерфейсный модуль 
:(
    Опции темы
Ham
Дата 30.7.2003, 18:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Доброго вам времени суток!
У меня есть интерфейсный модуль к ком серверу ( dll ) написанный на delphi:
Код
unit IntUnit;

interface
type IFPrinter = Interface  
    ['{B426E9E1-E5EC-11D6-816E-DDD993618123}']
 function PortInit(com: byte): boolean;
 function InitpKKM:byte;
 function Position(name:string;price,quantity,sum:real;section:byte):byte;
 function Income(sum:real):byte;
 function Outlay(sum:real):byte;
 function Receipt(sum,by_cheque,on_credit:real):byte;
 function Return(sum:real):byte;
 function Print(line:string):byte;
 procedure Close;
end;

const
 Class_FPrinter: TGUID = '{B426E9E1-E5EC-11D6-816E-DDD993618123}';

implementation

end.


помогите переделать под С, CBilder
  Вверх
Ham
Дата 30.7.2003, 19:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Просто, срочно необходимо!
  Вверх
TaTaP
Дата 31.7.2003, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 15.10.2002

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



В С++ интерфейс - это абстрактный класс, у которого все функции - чисто виртуальные. Для того, чтобы связать интерфейс с GUID, то надо использовать IDL...
PM MAIL   Вверх
Vyacheslav
Дата 31.7.2003, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



На C++Builder 6 это будет выглядеть примерно так
Код

__interface INTERFACE_UUID("{B426E9E1-E5EC-11D6-816E-DDD993618123}") IFPrinter  :

   public IInterface
{
public:
  virtual bool __stdcal PortInit(unsigned char  ) = 0;
  virtual unsigned char __stdcal   InitpKKM(void)=0;
  virtual unsigned char  __stdcal   Position(ShortString name, double price, double  quantity, double sum:real,unsigned char   section) =0;
 virtual unsigned char  __stdcal   Income(double sum)=0;
virtual unsigned char  __stdcal    Outlay(double sum)=0;
virtual unsigned char  __stdcal    Receipt(double sum, double by_cheque, double on_credit)=0:
virtual unsigned char  __stdcal    Return(double sum)=0;
virtual unsigned char  __stdcal    Print(ShortString line)= 0;
 virtual void  __stdcal  Close(void)=0;
};





--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Ham
Дата 31.7.2003, 08:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(TaTaP @ 31.7.2003, 02:03)
В С++ интерфейс - это абстрактный класс, у которого все функции - чисто виртуальные. Для того, чтобы связать интерфейс с GUID, то надо использовать IDL...

Поясните пожалуйста, как это понимать!
  Вверх
DENNN
Дата 31.7.2003, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



IDL- Interface Definition Language (Язык описания интерфейсов). Создан специально, чтоб описывать интерфейсы COM на переносимом языке, обычно описание структуру и GUID интерфейсов храниться в этом файле.
PM ICQ   Вверх
Zigurds
Дата 31.7.2003, 14:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ti mozjes zaimportirtovatj etot dll v C++ Builder, on sgjenjerirujet praviljnoje opsianjie interfeisov v header failje.

пользуйтесь транслитом

Ти мозэс заимпортиртоватж етот длл в Ц++ Буилдер, он сгэнэрируэт правилжноэ опсианжие интерфеисов в хеадер фаилэ.
  Вверх
Ham
Дата 1.8.2003, 00:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А кто скажет как на VC переделать?
  Вверх
Ham
Дата 1.8.2003, 00:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Прошу прощения! Я имел ввиду где можно взять инфу по IDL и пример какой нибудь к ниму!
  Вверх
TaTaP
Дата 1.8.2003, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 15.10.2002

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



Вверху форума есть специальный раздел по литературе. Заходишь, выбираешь сайт, ищешь книги по COM/ActiveX и читаешь ВСЮ книгу (желательно 2-3 раза, т.к. с первого раза много непонятно). Потом приходишь на этот форум и уже сам отвечаешь на подобные вопросы...
PM MAIL   Вверх
Ham
Дата 1.8.2003, 11:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(TaTaP @ 1.8.2003, 01:44)
Вверху форума есть специальный раздел по литературе. Заходишь, выбираешь сайт, ищешь книги по COM/ActiveX и читаешь ВСЮ книгу (желательно 2-3 раза, т.к. с первого раза много непонятно). Потом приходишь на этот форум и уже сам отвечаешь на подобные вопросы...

Хм. mad.gif Примерно такие же ответы я могу давать в каждом топике всем подряд! Типа наберитесь опыта, прочитайте кучу литературы, а потом вы станете спецами и вам не понадобится спрашивать на форуме!
Я наверное буду очень крутым!
Я перекопал кучу инфы по ком объектам! Но нигде ни слова не сказано про VC или IDL!
  Вверх
DENNN
Дата 1.8.2003, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Не там копал. Про VC особо и искать не нужно: заходишь на сайт с компьютерной тематикой - почти все что там сказано по C++ относится и к VC.
С IDL сложнее. Во первых, потому что Нормальных оучающих примеров по COM/ATL в сети просто нет, а все только на бумаге (это мое сугубо личное мнение). Во 2-ых, потому что тема эта на порядок сложнее и требует большей кропотливости и труда (сравнительно с темой "C++ за 20 дней" smile.gif ).
Как тебе уже сказали, если ты не гений, то вероятно книгу по ATL тебе придтся прочитать не один раз sad.gif И это хорошо, потому что все же идеология построения платформонезависимых объектов своеобразна.

Если же ты планируешь за 1-2 дня переписать дельфийный код на сишный ком-объект, но делать это на си не умеешь, то лучше сейчас этим не занимайся - даже если какой-то код появиться, то отлаживать его тоже надо уметь. sad.gif
PM ICQ   Вверх
Ham
Дата 1.8.2003, 12:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Просто проект горит!
Клиенты написанные на билдеровских средах работают без проблем! Но вот беда надо ещё и на VC,VB,1C чтоб заработало sad.gif
Я уже незнаю что делать!
  Вверх
DENNN
Дата 1.8.2003, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Если тебе просто в VC надо использовать COM-объекты, которые написанны на другом языке, то нет проблем - для этого COM-технология и была создана.
Тебе же сказали, что необходимо иметь заголовочный файл, где объявлены все GUID твоего объекта и задекларированны его интерфейсы.
PM ICQ   Вверх
Ham
Дата 1.8.2003, 13:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(DENNN @ 1.8.2003, 13:07)
Если тебе просто в VC надо использовать COM-объекты, которые написанны на другом языке, то нет проблем - для этого COM-технология и была создана.
Тебе же сказали, что необходимо иметь заголовочный файл, где объявлены все GUID твоего объекта и задекларированны его интерфейсы.

Ну так!
Что я и прошу с самого начала!
Для BC такой модуль написали, спасибо! А вот для VC и VB никак.
Если кто может, помогите!

PS Может и для 1C.
ЗЫЖ Я наверное повешусь!
  Вверх
DENNN
Дата 1.8.2003, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Цитата
Для BC такой модуль написали

Что значит модуль? если файлы заголовочные есть, то они должны подойти.
PM ICQ   Вверх
Ham
Дата 1.8.2003, 15:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(DENNN @ 1.8.2003, 13:16)
Цитата
Для BC такой модуль написали

Что значит модуль? если файлы заголовочные есть, то они должны подойти.

Тогда объясни мне плз что такое заголовочный модуль!
  Вверх
DENNN
Дата 1.8.2003, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Не модуль, а файл. Заголовочный файл, это файл с кодом C, который имеет расширение *.h (от Header)
PM ICQ   Вверх
Step
Дата 1.8.2003, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



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


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Unregistered
Дата 1.8.2003, 15:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
в срр файлах располAгается реализация...

  Вверх
Ham
Дата 1.8.2003, 15:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ты имел ввиду tbl?
  Вверх
Ham
Дата 1.8.2003, 15:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сори не видел этих постов!
Так я и говорю, что такой модуль для BC написали!
Код

__interface INTERFACE_UUID("{B426E9E1-E5EC-11D6-816E-DDD993618123}") IFPrinter  :

  public IInterface
{
public:
 virtual bool __stdcal PortInit(unsigned char  ) = 0;
 virtual unsigned char __stdcal   InitpKKM(void)=0;
 virtual unsigned char  __stdcal   Position(ShortString name, double price, double  quantity, double sum:real,unsigned char   section) =0;
virtual unsigned char  __stdcal   Income(double sum)=0;
virtual unsigned char  __stdcal    Outlay(double sum)=0;
virtual unsigned char  __stdcal    Receipt(double sum, double by_cheque, double on_credit)=0:
virtual unsigned char  __stdcal    Return(double sum)=0;
virtual unsigned char  __stdcal    Print(ShortString line)= 0;
virtual void  __stdcal  Close(void)=0;
};

  Вверх
DENNN
Дата 1.8.2003, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Так приехали.
Ну так возьми этот файл и пользуйся.
Зачем переписывать COM-сервер если ты пишешь под него клиента?
Пользуйся откомпилированной и установленной в системе dll.

Или ты хочешь чтоб мы угадали, что же за дельфийный код, из которого собран твой сервер?
PM ICQ   Вверх
DENNN
Дата 1.8.2003, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



И еще раз повторяю: это называется заголовочный файл, а не модуль.
Если хочешь получить ответ на свой вопрос, то надо хотя бы его грамотно задать, а то под модулем понимают совсем другое.
PM ICQ   Вверх
Ham
Дата 1.8.2003, 16:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(DENNN @ 1.8.2003, 16:04)
Так приехали.
Ну так возьми этот файл и пользуйся.
Зачем переписывать COM-сервер если ты пишешь под него клиента?
Пользуйся откомпилированной и установленной в системе dll.

Или ты хочешь чтоб мы угадали, что же за дельфийный код, из которого собран твой сервер?

Ну блин!
Так и ёлы палы! Я не хочу переписывать весь ком на VC! Мне просто нужен ЗАГОЛОВОЧНЫЙ ФАЙЛ! И всё!
  Вверх
Step
Дата 1.8.2003, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



имхо, классвизард тебе из этого файла и сделает заголовочный


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Ham
Дата 1.8.2003, 16:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Под где?
Под VC или где?
  Вверх
mr.DUDA
Дата 1.8.2003, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



кхе-кхе...
Берем VC++ тыцкаем ClassWizard, выбираем AddClass/From type library, показываем на наш *.tlb (*.olb, *.dll) файл где COM-сервер лежит, отмечаем в списке те интерфейсы, которые нам нужны в итоговом *.h-файле, давим Ok и получаем заголовочный файл. Включаем его #include, юзаем. В заголовке - классы (врапперы), которые и делают всю грязную работу с серваком. smile.gif


--------------------
user posted image
PM MAIL WWW   Вверх
DENNN
Дата 1.8.2003, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Надеюсь автор не забудет сказать когда у него все получиться об этом нам.......
PM ICQ   Вверх
Ham
Дата 1.8.2003, 17:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(DENNN @ 1.8.2003, 16:23)
Надеюсь автор не забудет сказать когда у него все получиться об этом нам.......

Обязательно скажу!
Столько времени людям мозги полоскал! smile.gif И после это го не сказать?
  Вверх
Ham
Дата 4.8.2003, 21:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну пипалы вы даёте!
Я просто поражаюсь!
Неужели никто не догадался сказать, что бы я юзал OLE Automation server!
Это же круто! Никаких заголовочных файлов! Всё работает даже лучьше чем старый вариант!
И никакого гемороя!
  Вверх
Ham
Дата 5.8.2003, 16:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем спасибо!
  Вверх
TaTaP
Дата 7.8.2003, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 15.10.2002

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



Вот, блин, мы же еще и виноваты остались... Помогай после этого людям...
PM MAIL   Вверх
DENNN
Дата 7.8.2003, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Цитата
еужели никто не догадался сказать, что бы я юзал OLE Automation server!

Когда из твоего "юзанья OLE" получится что-то стоящее, тогда можешь так высказываться smile.gif
PM ICQ   Вверх
mr.DUDA
Дата 7.8.2003, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



На второй стр. давались указания как подрубить к проекту и юзать COM-объект, в т.ч. OLE Automation Server.


--------------------
user posted image
PM MAIL WWW   Вверх
Ham
Дата 7.8.2003, 21:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Никто не виноват! Я звиняюсь, если кого обидел!
Просто всё так просто с этим оле!
У меня всё получилось и я сразу здал проект клиенту! Всего одна ночь и всё smile.gif
  Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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