Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Interface


Страницы:   1 2

Dragon21 ©   (2004-09-30 14:28:00) 

Привет всем. У меня есть IInterface который я получаю из DLL (чужой), мне требуется его сохранить в stream. У полученного интерфейса такого метода нет, я делал преобразование в IDockManager, у него есть метод SaveToStream. Но при выполнении этого метода падает DLL. Я понимаю что при преобраховании передается только pointer. Но как это обойти не знаю. Может кто сталкивался с подобной проблемой, поделитесь как можно решить эту проблему?


Dragon21   (2004-09-30 18:30:00) [1]

Расскажу, думаю это действительно будет правильно.
Как я и думал, это направление оказалось тупиком, но есть более интересное решение, которое можно было получить, если не упираться именно, в задачу сохранения интерфейсов. Каждый из них, имеет свой уникальный идентификатор, передав который на уровень другого объекта, можно было получить требуемый интерфейс, то есть та самая проблема восстановления сошла на нет, все оказалось просто. Достаточно сохранить идентификатор, а потом передать его на уровень базового класса. Примерно получилось так VSSDataBase.GetItem(identifier). Утрирую конечно, но общий смысл такой. Всем большое спасибо. Ваши советы помогли поискать более простое и элегантное решение. А то я зациклился на одном месте, такое к сожалению бывает.


Суслик   (2004-09-30 18:06:00) [2]


>  [33] Dragon21   (30.09.04 18:03)

Рассказал бы.
Думаю мы этого достойны :))))


Dragon21   (2004-09-30 18:03:00) [3]

Всем спасибо, я нашел другое решение, которое оказалось на столько простым, что даже стыдно стало, что сразу не сделал, но как известно на ошибках учатся, жаль что на своих:-)


Dragon21   (2004-09-30 17:21:00) [4]

Забыл добавить, только создается он пустой. Без каких либо значений.


Dragon21   (2004-09-30 17:20:00) [5]

С созданием никаких проблем, это делается легко. Есть такие возможности.


Dragon21   (2004-09-30 17:18:00) [6]

ТО [27]
Придется проверять и делать, другое решение все равно в голову не приходит.


Суслик   (2004-09-30 17:17:00) [7]


>  [28] Dragon21   (30.09.04 17:15)

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


Dragon21   (2004-09-30 17:15:00) [8]

С восстановлением действительно проблемы, нельзя этому интерфейсу устанавливать свои значения, взять пожалуйста, а вот присвоить, не позволяет. Только глобальное присвоение типа iVSSItem:=блаблабла... а например iVSSItem.Versions:=ля ля, не работает...


Суслик   (2004-09-30 17:13:00) [9]


> по времени это будет проблематично.

А ты проверь.
Может не все так плохо.


Dragon21   (2004-09-30 17:10:00) [10]

Как раз основная проблема и состоит в том, чтобы восстановить:-)
а по поводу фразы, у интерфейса можно получить путь и имя файла, не интерфейса, только потом придется пробегать по всему дерефу файлов, брать объект, и сверять, толи это имя или нет, по времени это будет проблематично.


Суслик   (2004-09-30 17:06:00) [11]


>  [24] Digitman ©   (30.09.04 17:04)
>
> > Суслик ©   (30.09.04 16:58) [22]
>
>
> я вообще не понял из фразы

Я имел в виду, что сохранить в поток можно (если интерфейс предоставляет доступ ко все нужным значениям). Но, как я понял, автору нужно получить на удаленной машине точно такой же интерфейс с теми же значенями. Вот в этом проблемы будут.


Digitman   (2004-09-30 17:04:00) [12]


> Суслик ©   (30.09.04 16:58) [22]


я вообще не понял из фразы


> если просто сохранить имя, то потом найти его будет сложно


что такое "имя интерфейса" и почему "потом найти его будет сложно" ... попросту не работал с VSS


Dragon 21   (2004-09-30 17:03:00) [13]

Возможно так и стоит сделать, просто я пока не знаю как, там в основном методы, а свойств, очень мало, и боюсь что для получения к нему доступа, этого будет не достаточно, хотя утверждать пока не проверишь, глупо, вначале надо попробовать.


Суслик   (2004-09-30 16:58:00) [14]


>  [21] Digitman ©   (30.09.04 16:57)
> а какие проблемы-то ? даже если нет ничего похожего на SaveToStream,
> реализовать такую процедуру самому вовсе не сложно - достаточно
> последовательно записать в поток значения тех свойств интерфейсного
> объекта, которые требуется сохранять

Сохранить проблем никаких. А вот восстановить :)))
Не факт, что удасться пересоздать интерфейс из файла. Или этого и не требуется?


Digitman   (2004-09-30 16:57:00) [15]


> Dragon 21


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


Dragon 21   (2004-09-30 16:48:00) [16]

Библиотеку я импортировал, с этим проблем нет, я из своей программы могу с файлом делать все, что заложено в стандартном VSS (одно только не получилось, но с этим я разберусь), просто мне в базе нужно хранить объект, который изменили, а потом уже с ним работать, вот это у меня пока не получилось. И все доступные методы я тоже нашел, к сожалению того, что мне надо, там нет. Буду придумывать другое решение.


Суслик   (2004-09-30 16:24:00) [17]


> отсутствие же такой инф-ции, равно как собственно и самой
> библ-ки типов, afaik, не позволит использовать стандартный
> маршаллинг

Это у нас Romkin спец по этому. Хорошо бы внес ясность.

ЗЫ. Про "могут" я уже потом прочел.


Digitman   (2004-09-30 16:23:00) [18]


> Т.е. все реализуемые интерфейсы (пусть даже не мои) должны
> быть описаны в библиотеке?


я такого не говорил
могутбыть описаны, но не обязаны

отсутствие же такой инф-ции, равно как собственно и самой библ-ки типов, afaik, не позволит использовать стандартный маршаллинг


Суслик   (2004-09-30 16:12:00) [19]


>  [16] Digitman ©   (30.09.04 16:10)
>
> > Суслик ©   (30.09.04 16:05) [15]
>
>
> а как же тогда обращаться к интерфейсу, если он не описан
> в библиотеке ? как ты себе это видишь ?

Плохо вижу. Потому и спрашиваю:)))

Т.е. все реализуемые интерфейсы (пусть даже не мои) должны быть описаны в библиотеке?


Digitman   (2004-09-30 16:10:00) [20]


> Суслик ©   (30.09.04 16:05) [15]


а как же тогда обращаться к интерфейсу, если он не описан в библиотеке ? как ты себе это видишь ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо