![]() |
|
![]() ![]() ![]() |
|
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: 1 Всего: 5 |
Привет! помогите решить проблему:
Есть структура vector<VARIANT> m_varVector. В эту структуру на стороне клиента (допустим VB) добавляем данные. В качестве данных может быть ссылка на что угодно, например: Dim xmd As DOMDocument Set xmd = New DOMDocument mcol.Add xmd Задача: получить ссылку например так IDispatch* pDispatch = NULL; pDispatch = m_varVector[item].pdispVal; и узнать ProgID элемента, который хранится в полученой нами pDispatch переменной. Надеюсь на ответы. Заранее благодарен. ![]() Добавлено через 2 минуты и 57 секунд mcol - наш тип для работы с vector<VARIANT> m_varVector Dim mcol As ATLCOLLLib.CollectVari Set mcol = New ATLCOLLLib.CollectVari -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Ничего не понял
![]() Ссылка в каком виде представлена? По ProgID (который кстати всего навсего обычная строка) можно создать объект, но по уже созданному объекту ProgID получить нельзя. Это сообщение отредактировал(а) xvr - 1.11.2010, 13:06 |
|||
|
||||
RastaDja |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: 1 Всего: 5 |
ссылка это просто элемент в векторе. Тобиш это любой обьект, которих хранится в VARIANT переменной. ССылка никак не представлена, мы просто получаем его
Мне надо сохранить мой вектор в файле. данные ссылок надо сохранить так, чтоб при загрузки файла все обьекты востановились, для этого мне надо ProgID, потому, что это удобно для скриптовых языков и более читабельно. Добавлено через 1 минуту и 21 секунду ...потому, что это удобно для скриптовых языков и более читабельно чем CLSID -------------------- The more closely you look at one thing, the less closely can you see something else. |
||||||
|
|||||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Судя по примеру это все же не 'любой элемент', а конкретно IDispatch
Вам в любом случае понадобится поддержка со стороны сохраняемых объектов. См. в сторону IPersistStream (и др. IPersis* интерфейсов), и в сторону IMoniker
|
||||
|
|||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: 1 Всего: 5 |
Спасибо за ответ.
Попробую поискать в сторону PersistStream и т.п. Эсли можно какойто пример, буду оч благодарен Добавлено через 6 минут и 20 секунд Плюс есть проблема в том, что не все обьекты поддерживают IPersist* интерфейсы. А предполагается сохранение всех данных.
пока есть такой код. но как получить данные о конкретном коклассе а не о всех -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
||||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: 1 Всего: 5 |
на данный момент решение такое
но почемуто в зависимости от обьэкта получаю ответ либо Msxml2.DOMDocument - правельный для Msxml2.DOMDocument либо StdFont - не правельный для stdole.StdFont не понимаю в чём проблема -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Видимо stdole.StdFont делегировал свое сохранение StdFont'у.
Через IPersistStream можно слить все состояние объекта, не вдаваясь в его CLSID или ProgID. По идее можно будет и восстановить |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: 1 Всего: 5 |
ладно, спасибо за помощь
-------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: 1 Всего: 5 |
Все нормально, StdFont, как и stdole.StdFont создаётся нормально Set f = CreateObject("StdFont")
ну а данные буду писать через IPersistStream -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |