Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Отладка ActiveX / 23 сообщений из 23, страница 1 из 1
03.02.2009, 18:11
    #35794736
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Добрый день! Собрал свой ActiveX стал тестить из новго проекта... А как отладить его теперь?
...
Рейтинг: 0 / 0
03.02.2009, 18:20
    #35794759
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
...
Рейтинг: 0 / 0
03.02.2009, 18:21
    #35794765
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Спасибо)))
...
Рейтинг: 0 / 0
03.02.2009, 19:31
    #35794936
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Почти разобрался... Только вот... Компонент экспортирует 1 класс и 3 интерфейса класс я получаю через CreateObject, а вот когда пытаюсь получить интерфейс(public not createable) вылетает говоря мол пытаюсь передать ссылку на приватный объект... В чем беда? если играю как с ДЛЛ все гут...
...
Рейтинг: 0 / 0
04.02.2009, 10:03
    #35795508
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Код в студию.
...
Рейтинг: 0 / 0
04.02.2009, 13:42
    #35796279
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Вот...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Option Explicit

Sub main()
Dim c 'As New RTFParser.GclsRTFText
    Set c = CreateObject("RTFParser.GclsRTFText")
    c.colors.addcolor  255 ,  0 ,  0  [color=red]- тут вылетает[/color]
    c.Fonts.addfont "Tahoma"
    c.range( 1 ,  2 ).Size =  12 
    MsgBox c.RTF
End Sub

...
Рейтинг: 0 / 0
04.02.2009, 15:10
    #35796656
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Ничего удивительного. У тебя класс LclsRTFColorTable объявлен как приватный, а именно его объект ты и пытаешься вернуть. То, что он реализует публичный интерфейс, рояля уже не играет.
...
Рейтинг: 0 / 0
04.02.2009, 15:12
    #35796666
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Тоже самое будет и с range и с colors.
...
Рейтинг: 0 / 0
04.02.2009, 15:35
    #35796777
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
DLL то работает как надо... Да и по логике вещей смыс тогда возиться с интерфейсами если нужно объявить классы public?
...
Рейтинг: 0 / 0
04.02.2009, 16:09
    #35796949
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Если "DLL то работает как надо", то откуда взялись проблемы?))
Насчет смысла — прочитайте какую-нибудь книжку про ООП вообще и интерфейсы в частности, вы явно не понимаете, для чего их придумали.
...
Рейтинг: 0 / 0
04.02.2009, 16:39
    #35797068
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Antonariy и интерфейсы в частности, вы явно не понимаете, для чего их придумали. ))))))
...
Рейтинг: 0 / 0
04.02.2009, 16:49
    #35797111
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Проблема в том что для отладки мне приходится каждый раз activeX dll переделывать в exe и назад, и расставлять св-ва классов, это нестрашно если таких классов 4, но хотелось бы знать как решать такие задачи без переделки проекта для отладки...
...
Рейтинг: 0 / 0
04.02.2009, 17:34
    #35797288
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Таки получается, что нормально работает exe, а не dll, и это тоже не удивительно — все классы приватные. А задачи такие решать не нужно, нужно консерваторию править, чтобы не ставить неверных условий.

Интерфейсы имеют смысл в немногочисленных случаях. Например для поддержания совместимости новой версии com-компонента с программным обеспечением, написанным под старую версию. Новые функции описываются в новых интерфейсах, а к классу добавляется их реализация, старые при этом не затрагиваются. Пример — Internet Explorer и MSHTML, мои программы, написанные под IE6, не заметили перехода на IE7.
В проектах, не предполагающих com-версионность, интерфейсы могут понадобиться, если проект большой и использует конвейер, однородно обрабатывающий разнородные объекты — уместно реализовать в каждом некий интерфейс, с которым будет работать конвейер, дабы не косячить в параметрах. Типа Option Explicit для com.
...
Рейтинг: 0 / 0
04.02.2009, 17:44
    #35797322
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
AntonariyТаки получается, что нормально работает exe, а не dll
Работает DLL, для отладки ее я каждый рах переделываю в EXE и обратно. С ООП я знаком очень хорошо, а вот ответа на поставленный вопрос не получил... Подозреваю, что так уж реализовано в VB... Спасибо.
...
Рейтинг: 0 / 0
04.02.2009, 19:55
    #35797670
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Grayscale,
что-то я не пойму. По тому, что я вижу, есть две проблемы:
1) отладка ActiveX DLL,
2) проблемы при передаче параметров объектного типа.
Давайте решим хотя бы первую. Фраза GrayscaleПроблема в том что для отладки мне приходится каждый раз activeX dll переделывать в exe и назад, и расставлять св-ва классов, это нестрашно если таких классов 4, но хотелось бы знать как решать такие задачи без переделки проекта для отладки... плюс приложенный проект говорит о том, что ссылка выше прочитана не была. А зря. Методика там расписана, как избежать лишних действий типа переделки в exe и назад, и не ходить по граблям.
Добавьте стандартный exe-проект, создав таким образом группу проектов.
Сделайте exe-проект стартовым.
Сделайте в нём ссылку на первый (dll) проект.
Сделайте тестовую процедуру в exe, если нужно тестировать взаимодействие клиента и in-proc сервера.
Или, если хочется сделать какое-то внутреннее тестирование в dll, то, как вариант, оставьте в ней тестовую процедуру Main и укажите её стартовым объектом в свойствах dll-проекта, а в exe-проекте сделайте процедурку с созданием public-объекта из dll. При первом создании такого объекта отработает Main в dll (поставьте точки останова). Ну, и т.д., почитайте, не поленитесь. Это как рыбий жир - противно, но полезно.
...
Рейтинг: 0 / 0
04.02.2009, 23:07
    #35797895
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Grayscale
Работает DLL,
Ну где же она работает?
Код: plaintext
1.
2.
3.
Dim c 'As New RTFParser.GclsRTFText
    Set c = CreateObject("RTFParser.GclsRTFText")
    c.colors.addcolor  255 ,  0 ,  0  [color=red]- тут вылетает[/color]
Приложите тогда уж пример, где оно все работает так как вы считаете правильным.
...
Рейтинг: 0 / 0
05.02.2009, 11:42
    #35798579
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Не работает исключительно при отладке
...
Рейтинг: 0 / 0
05.02.2009, 13:05
    #35798910
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Если все сделано правильно, должно работать в обоих случаях.
Причем c.colors.addcolor не работает с выложенным вами архивом ни в одном.
У меня начинается когнитивный диссонанс)
...
Рейтинг: 0 / 0
05.02.2009, 13:27
    #35798993
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Это последняя, рабочая версия...
...
Рейтинг: 0 / 0
05.02.2009, 14:12
    #35799165
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Где отладочный проект? Где пресловутое c.colors.addcolor 255, 0, 0?
...
Рейтинг: 0 / 0
05.02.2009, 14:54
    #35799339
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
GrayscaleВот...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Option Explicit

Sub main()
Dim c 'As New RTFParser.GclsRTFText
    Set c = CreateObject("RTFParser.GclsRTFText")
    c.colors.addcolor  255 ,  0 ,  0  [color=red]- тут вылетает[/color]
    c.Fonts.addfont "Tahoma"
    c.range( 1 ,  2 ).Size =  12 
    MsgBox c.RTF
End Sub

...
Рейтинг: 0 / 0
05.02.2009, 16:54
    #35799842
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
Хммм…
То, что приватный объект может отдать публичный интерфейс, для меня новость.
Однако отладить его не трогая классы можно. В аттаче нужно обратить внимание на свойства Project1.vbp, дополнительный Module1 и start.vbs.
...
Рейтинг: 0 / 0
05.02.2009, 17:14
    #35799922
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка ActiveX
посмотрю спасибо)))
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Отладка ActiveX / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]