![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
blondinka |
![]()
Сообщение
#1
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Привет! Ребята, не подскажите , как сделать callBack в com?
|
|
|
blondinka |
![]()
Сообщение
#2
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ну хоть кто-нибудь знает, как обернуть сигналы, чтобы к ним был доступ без средств qt?
|
|
|
kwisp |
![]()
Сообщение
#3
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
а подробнее можно?
указатель на функцию можно использовать. |
|
|
blondinka |
![]()
Сообщение
#4
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
А к какому объекту обращаться?
|
|
|
kwisp |
![]()
Сообщение
#5
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
А к какому объекту обращаться?
вот исходя из этого действовать. почитай про коллбэки может что новое вычитаешь. Сообщение отредактировал kwisp - 12.10.2009, 17:47 |
|
|
blondinka |
![]()
Сообщение
#6
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
AClass, я так понимаю, это класс-клиент.
так из Com-сервера я его определения не увижу...Т.е. компилятор не пойиет что за AClass... |
|
|
kwisp |
![]()
Сообщение
#7
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
AClass, я так понимаю, это класс-клиент. я всегда думал что тот объект чьи методы вызываются сторонним объектом -- объект сервер. т.е. к нему обращаются. соответственно кто вызывает это клиент(он пользует). получается AClass это сервер. к нему обращаемся. если не видишь класс метод которого нужно вызвать то дело сложнее. а "кодовый" не могли бы представить? |
|
|
blondinka |
![]()
Сообщение
#8
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Обратиться к серверу можно и без callBack'a
Как из сервера обратиться к клиенту, получив от него только адрес его(клиентской) функции? Сначала -да, клиент обращается к северу с запросом каким-то там (это я воплотила:)), а вот потом сервер должен отдать клиенту информацию. Сообщение отредактировал blondinka - 12.10.2009, 18:49 |
|
|
kwisp |
![]()
Сообщение
#9
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
в какой то форме тебе нужен по-любому указатель на объект чей метод ты вызываешь.
либо это будет виртуальный метод и тебе хватит базового класса, либо сам объект. тяжело без кода думать. вернуть информацию в клиент можно к примеру с помощью return. |
|
|
blondinka |
![]()
Сообщение
#10
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Нельзя, потому что информация, в свою очередь, приходит из сокета.
А кода нет... Я поэтому и спрашиваю- как это сделать-как принять этот адрес и как по нему обратиться:) |
|
|
kwisp |
![]()
Сообщение
#11
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
blondinka |
![]()
Сообщение
#12
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ну передать я смогу,а как принять и запомнить? т.е. получить доступ к этому объекту из другого метода этого класса(сервера)
Ну какой код могу привести,если его нет. Едиственное могу привести код того класса, который нужно "обернуть" в com. НО толку от этого не будет никакого. Тем более, что я пишу сервер, соответсвенно клиента нет и в помине. Сообщение отредактировал blondinka - 12.10.2009, 21:19 |
|
|
kwisp |
![]()
Сообщение
#13
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
blondinka |
![]()
Сообщение
#14
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Т.е как обернуть сигнал никто не знает..Просто не понятно одно, если есть средства в Qt для создания самого Com, то и должны быть средства для представления этих их сигналов.
|
|
|
kwisp |
![]()
Сообщение
#15
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Просто не понятно одно, если есть средства в Qt для создания самого Com, то и должны быть средства для представления этих их сигналов. не понятно о чём ты. ![]() есть догадка что ты хочешь вызвать сигнал объекта Qt обернутого в COM. если так то как и обычно т.к. сигналы в защищенной секции то для вызова сигнала из вне нужно в классе содержащем сигнал написать доступную функцию которая вызовет сигнал
можно попробовать получить адресс самого сигнала(не пробовал не уверен) &sgCall; если сигналы имеют одинаковую сигнатуру пердают одни и теже аргументы, то можно их адреса засунуть в массив. Из вне можно вызывать функцию вида callMe()
вызываешь callMe(...) COM внутри него вызываются сигналы. если не получится получить и корректно использовать указатель на сигналы в конце концов можно использовать стандартный switch(). сам так делать не пробовал. можно посмотреть QAxObject и прочие классы. документацию конкретного COM объекта можно получить с помощью generateDocumentation () |
|
|
blondinka |
![]()
Сообщение
#16
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Именно про эти классы я и говорила..Но документации на русском нет, поэтому сложно понять, что к чему там относится,а примеры даны элементарные и не подходят.
Я не знаю можно ли поймать qt-шные сигналы,напрмер, в делфи. А сигналы мне вызывать не нужно, нужно поймать его из класса-клиента, в тот момент, когда событие в com-объекте произойдет(придут данные из сокета). |
|
|
kwisp |
![]()
Сообщение
#17
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Я не знаю можно ли поймать qt-шные сигналы,напрмер, в делфи. а сразу нельзя было это написать:) посылать события, можно поробовать. а может qt за тебя будет это делать вот тебе надо искать что такое ActiveX event и как им пользоваться. |
|
|
blondinka |
![]()
Сообщение
#18
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо, попробую высылать события
|
|
|
kwisp |
![]()
Сообщение
#19
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
blondinka |
![]()
Сообщение
#20
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
т.к. я пишу сервер, вместо сигналов думала выслать события, но не получится, т.к все равно нужно указать получателя.
А как их будут ловить на клиенте тож не понятно |
|
|
kwisp |
![]()
Сообщение
#21
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
blondinka |
![]()
Сообщение
#22
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
И что?))
Генерируются они с каким типом??)) Или это к тому,что мне в сервере нужно их ловить?) |
|
|
kwisp |
![]()
Сообщение
#23
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
еще раз повторюсь.
думаю Qt автоматически преобразует сигналы в события. и тебе надо их ловить.вот. если в твоем делфи есть что нить типа QApplication::event(QEvent*) QApplication::eventFilter(QObject*,QEvent*) то можно написать не большое тестовое приложение с СОМ объектом (обернутым классом Qt в COM с помощью QAx...) который к примеру по таймеру посылает сигнал. а в клиентской части посмотреть что за собыия приходят вывести в лог и посомотреть что да как. или сигнал посылать по нажатию кнопки. короче как то так. Генерируются они с каким типом??)) ктож тебе скажет, я хрустальный шар дома сегодня оставил, а волшебное зеркало девушке подарил:) |
|
|
blondinka |
![]()
Сообщение
#24
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Я это поняла с первого раза. Но я про это вскользь упомянула..я написала маленькое приложение, прада, на qt, но для com'a нет разницы.. Вот это приложение не ловит эти события вот таким методом QApplication::eventFilter(QObject*,QEvent*) Вот этим ловит QApplication::event(QEvent*), но ловит все события абсолютно не зависимо от кого они пришли.. А вывести тип события тоженичего не дает,т.к тип события, сгенерированного из сигнала, я не знаю. Мне их ловить не надо..Мне нужно позаботиться о том,что человек,что будет писать клиента на делфи, смог их словить! Дело так обстоит: у меня есть qt-класс, написанный мной. Его мне нужно обернуть в Com и именно он высылает сигналы. Клиент, который будет написан на Делфи (не мной), должен их поймать..так что не поняла, зачем мне писать еще и тестовый com, если есть реальный. Я написала тестовое клиентское приложение, которое ловит события, сгенерированные из сигналов. Сообщение отредактировал blondinka - 13.10.2009, 13:24 |
|
|
kwisp |
![]()
Сообщение
#25
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
QApplication::event(QEvent*), но ловит все события абсолютно не зависимо от кого они пришли.. А вывести тип события тоженичего не дает,т.к тип события, сгенерированного из сигнала, я не знаю. так выведи типы и инфу по событиям из нескольких сигналов и посмотри что приходит!!! передай в сигнале параметры различные и посмотри что приходит. думаю qt приложение как клиент не годится(т.к. тут можно напрямую соединить нет нужды в событиях и qt по просту может не ловить их(могу ошибаться)) раз уж события будут ловить делфи , надо в делфи и смотреть! именно в делфи посмотреть как они приходят(я тамошних механизмов не знаю) даже думаю обязательно именно там и посмотреть. или в другом языке, набери в гугле "обработка событий ActiveX компонента" и почитай. как и что там обрабатывается. |
|
|
blondinka |
![]()
Сообщение
#26
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Дело так обстоит: у меня есть qt-класс, написанный мной. Его мне нужно обернуть в Com и именно он высылает сигналы. Он будет Com -cервером
А ловить будет сигналы будет клиент.Он не будет написан на qt. |
|
|
kwisp |
![]()
Сообщение
#27
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
тыж должна оставить хоть какуюто спецификацию приходящих событий.
не скажешь человеку который будет писать на делфи "придут какие то события" надо определено сказать какие события придут. для этого надо протестить к примеру так как я сказал. |
|
|
blondinka |
![]()
Сообщение
#28
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Конечно,я ее составлю, когда сама буду знать во что генерируются эти сигналы..Про пример,я уже писала..Может просто объясняю непонятно.
|
|
|
kwisp |
![]()
Сообщение
#29
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
ладно по следняя попытка.
к примру в делфях есть обработчик событий в него приходят события которые имеют ТИП , ДАННЫЕ, еще какие то поля. в клиенте написанном на делфи выведи в лог для любого события ТИП и ДАННЫЕ, и определишь соответствие "сигнал Qt - событие COM в делфи." вот моё предложение. что не понятно? |
|
|
blondinka |
![]()
Сообщение
#30
|
![]() Студент ![]() Группа: Участник Сообщений: 71 Регистрация: 8.4.2008 Из: Питер Пользователь №: 144 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Да все понятно. Уже давно ответила))НЕ прокатывает)
У меня нет клиента на делфи ,потому что делфи я не знаю. Сделала Qt-клиент, который ловит эти события. Да эти события, которые генериуются от сигналов, не ловятся в qt-клиенте даже. В любом случае спасибо:) Сообщение отредактировал blondinka - 13.10.2009, 14:21 |
|
|
kwisp |
![]()
Сообщение
#31
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
жаль в делфи не шарю.
напиши на чем сможешь на MFC к примеру. П.С. не за что. лучше спасибо будет когда все заработает похвастаешься в эту тему:) Сообщение отредактировал kwisp - 13.10.2009, 15:05 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 26.6.2025, 8:49 |