Форум: "Потрепаться";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизDelphi vs. C++ Найти похожие ветки
← →
vuk © (2004-09-07 15:21) [280]to Romkin © (07.09.04 15:13) [273]:
>Посмотри список загруженных модулей
А разобраться, зачем это нужно, в RTL посмотреть? :o)
← →
vuk © (2004-09-07 15:25) [281]to Суслик © (07.09.04 15:14) [275]:
>Давай сначала проблемы? Ты пока ни одной не привел...
Два фрагмента кода я привел. Если сходу не видно проблемы с этим кодом при наличии гипотетической директивы то я уже и не знаю...
← →
Romkin © (2004-09-07 15:25) [282]Суслик © (07.09.04 15:19) [279] и CORBA, заметь. :))
← →
Акуличев Дмитрий (2004-09-07 15:25) [283]
> vuk © (07.09.04 15:14) [274]
Ну как... Очень просто. Так как единственный способ узнать набор реализуемых интерфейсов -- запросить какие-либо, то ДО момента запроса какого-либо интерфейса объект может с агрегантами творить что угодно.
Вообще-то, этот постулат не независимый. Он следует из других.
Можно переформулировать этот постулат так:
Если x.QueryInterface(Ix, y) = S_OK, то x.QueryInterface(Ix, y) = S_OK
Или, по-русски, однажды успешно запрошенный интерфейс всегда запрашивается успешно.
← →
Romkin © (2004-09-07 15:27) [284]vuk © (07.09.04 15:21) [280] А вот зачем это надо - я так и не понял :((
← →
Суслик © (2004-09-07 15:27) [285]
> vuk © (07.09.04 15:25) [281]
согласен :)
БОРЛАНДУ
Предложение сделать управление временем жизни интерфейса снимается в виду отстутсвия требуемой суммы денег :)))
> Romkin © (07.09.04 15:25) [282]
Ты не увиливай :)))
Данноые требования есть следствия контекста механизма интерфейсов :))
← →
Ihor Osov'yak © (2004-09-07 15:33) [286]2 Romkin © (07.09.04 14:59) [263]
>Поэтому на вопрос "Реализуются ли все эти интерфейсы одним классом?" очень легко ответить :))
Ответ: А хр.. его знает, товарищ майор, чем они там реализуется..
Зы. Или я чего-то недопонимаю?
← →
Romkin © (2004-09-07 15:35) [287]>Данноые требования есть следствия контекста механизма интерфейсов :))
Чего сказал-то? Честно - я не понял :)) То, что я привел, это именно соглашения. Вполне действующие
← →
Суслик © (2004-09-07 15:37) [288]
> Romkin © (07.09.04 15:35) [287]
> Чего сказал-то? Честно - я не понял :))
да ладно забей, я уже раз 5 говорил это :)
Я хочу сказать, что знать эти правила для владения интерфейсами не обязательно, т.к. они есть требования определенной технологии, базирующейся на интерфейсах.
← →
Акуличев Дмитрий (2004-09-07 15:38) [289]
> Суслик © (07.09.04 15:19) [278]
> Все же есть ощущение, что данные правила есть требования
> контекста. В данном случае COM. Если бы они были важны для
> реализации интерфейсов в дельфи как таковых, то об этом
> обязательно было бы сказано в соответсвующей литературе.
Это правила реализации интерфейсов вообще.
← →
vuk © (2004-09-07 15:39) [290]to Суслик © (07.09.04 15:37) [288]:
>Я хочу сказать, что знать эти правила для владения интерфейсами
>не обязательно
Угу, точно. Проще рассказывать о нехватке мифических директив. :o)
← →
Romkin © (2004-09-07 15:40) [291]Суслик © (07.09.04 15:37) [288] Неа :)) Это - именно соглашения!!! Нет в СОМ (да, кажется, и нигде) механизмов, которые били бы разработчика по башке за их несоблюдение. Вот в чем дело. Тебе никто и ничто не мешает написать QueryInterface, которая нарушит все эти соглашения. Работать будет ;) Но остальные разработчики будут плеваться...
← →
Суслик © (2004-09-07 15:43) [292]
> Акуличев Дмитрий (07.09.04 15:38) [289]
> vuk © (07.09.04 15:39) [290]
> Romkin © (07.09.04 15:40) [291]
Чтобы я вам троим поверил, найдите в документации по интерфейсам в дельфи и даже по COM в дельфи список этих требований.
Заранее благодарен.
> vuk © (07.09.04 15:39) [290]
Правила для QI имеют по ходу дискуссии отношение к директивам? Если скажешь да, ну тогда просто не знаю что сказать ...
← →
Romkin © (2004-09-07 15:45) [293]Ihor Osov"yak © (07.09.04 15:33) [286] :))) Да обычно и знать-то не надо. Но если понадобится - запроси IUnknown и сравни два указателя :))
Суслик © (07.09.04 15:37) [288] Кстати, у этих соглашений есть следствия, одно из них Дмитрий Акуличев привел: если первый запрос интерфейса был успешным, то остальные обязаны быть успешными. Это не должно зависеть ни от времени суток, ни от прав доступа, ни от наличия или отсутствия ресурсов...
И тд.
← →
Суслик © (2004-09-07 15:47) [294]
> Romkin © (07.09.04 15:45) [293]
Ты мне про соглашения больше того, не надо... :))))
Ты меня хотел поймать, что я не знаю что-то про ключевое слово interface. Заметь я не говорил, что знаю com. Так вот - найди хоть в одной доке по дельфи эти соглашения и я пойду ламерить дома :)))) благо гости сегодня прийдут.
← →
vuk © (2004-09-07 15:51) [295]to Суслик [292]:
>Чтобы я вам троим поверил
Незнание, как известно, не освобождает. Не вериться - ну и ладно. :o)
>Правила для QI имеют по ходу дискуссии отношение к директивам?
Я про общий подход к делу. :o)
← →
Суслик © (2004-09-07 15:53) [296]
> vuk © (07.09.04 15:51) [295]
> Я про общий подход к делу. :o)
Ну это уже ты обобщил - право твое.
Согласен - слово "вера" не очень подходит. Я вам верю. См. 294
← →
vuk © (2004-09-07 15:54) [297]to Суслик © (07.09.04 15:47) [294]:
>Так вот - найди хоть в одной доке по дельфи эти соглашения
Вообще говоря, некоторые намеки есть в теме про COM Aggregation. Но вообще для понимания, что это такое и зачем все это нужно, лучше читать что-нибудь типа книжки "Основы COM".
← →
Суслик © (2004-09-07 15:55) [298]
> vuk © (07.09.04 15:51) [295]
И вообще, чем тебе подход не нравится. Соответствующая лит-ра прочитана. Лет 5 я этим успешно пользуюсь. В настоящее время привожу все к стандартам - не мешать интерфесы и объекты. Что нет так?
К мифической директиве мое отношение к соглашениями не имеет никакого дела... как минимум судя по дискуссии.
← →
Суслик © (2004-09-07 15:56) [299]
> vuk © (07.09.04 15:54) [297]
> Вообще говоря, некоторые намеки есть в теме про COM Aggregation
Намеки есть - но до приведенного здесь вида далеко.
← →
Romkin © (2004-09-07 15:59) [300]Суслик © (07.09.04 15:47) [294] В доке по Delphi много чего нет, но это не значит, что это не надо знать :)))
Хорошо. Есть у меня задумка сделать набор интерфейсов для таблицы с данными (датасета, стринггрида и тд):
ITable - собственно таблица
IRecord - запись(строка) этой таблицы, у нее есть IField и тд...
С помощью каких классов VCL ты будешь реализовывать эти интерфейсы?
ТАк пойдет?
Дело в том, что вопросы, ответы на которые исчерпывающи в хелпе - понятно, посмотрел и все :)))
← →
Ihor Osov'yak © (2004-09-07 16:00) [301]2 [276] Акуличев Дмитрий (07.09.04 15:16)
> Интерфейсы появились отнюдь не в COM.
Хм. Имнтерфейсы - как понятие - понятно. Но вот обладающими свойствами, перечислеными в [271], наследуемые от IUnknown? Или хотя бы без последнего условия?
Был бы благодарен за ссылку на источник информации.
← →
vuk © (2004-09-07 16:01) [302]to Суслик © (07.09.04 15:55) [298]:
>И вообще, чем тебе подход не нравится.
Зная основные правила работы с интерфейсами трудно дойти до ситуации, когда требуются директивы, которые создают проблем больше, чем решают.
← →
Суслик © (2004-09-07 16:04) [303]
> Ihor Osov"yak © (07.09.04 16:00) [301]
> Был бы благодарен за ссылку на источник информации.
Я бы тоже...
> Romkin © (07.09.04 15:59) [300]
Не знаю - я не знаю vcl.
я никогда не пользовался ничем сложнее tedit.
все остальное свое.
← →
Акуличев Дмитрий (2004-09-07 16:05) [304]
> Суслик © (07.09.04 15:43) [292]
> Чтобы я вам троим поверил, найдите в документации по интерфейсам
> в дельфи и даже по COM в дельфи список этих требований.
А таблицу умножения в документации по Дельфи не найти?
А то непорядок, панимаш, целый тип есть, а таблицы умножения нету...
← →
Суслик © (2004-09-07 16:06) [305]
> vuk © (07.09.04 16:01) [302]
Да ладно забей.
Проекту 5 лет. Начинал я его еще в универе, когда учился. Сейчас он успешно работает. А т.к. есть неотложные задачи, то руки не доходят. Просто ин-сы пришли не сразу - а как кобыле пятая нога. Постепенно избавляюсь.
Кстати, согласен с тем, что мифические директивы - это отстой.
А как вас еще поднять - молчите все в тряпочку :)))
А тут столько нового узнал: про соглашения, например.
← →
Суслик © (2004-09-07 16:07) [306]
> Акуличев Дмитрий (07.09.04 16:05) [304]
Зря язвишь :)
К вопросу отношения твоя реплика отношения не имеет.
← →
Romkin © (2004-09-07 16:07) [307]Суслик © (07.09.04 16:04) [303] Ну я уже тоже не знаю... Согласись, вопрос-то был про интерфейсы. Я уж и не знаю, что еще спросить-то...
Ну разве что о том, что за параметры у IDispatch.Invoke?
← →
Суслик © (2004-09-07 16:12) [308]
> Ну разве что о том, что за параметры у IDispatch.Invoke?
:))) Лень смотреть.
Скажи, уважаемый, на фига он мне вообще сдался :))))
Я обхожусь без него вполне успешно.
Кстати, ты нашел - я до сих пор не знаю, что такое dispinerface, т.к. никогда не видел необходимости пользоваться :)))
Формально это не ключевое слова interface, но все же знать должен был бы :))))
Пошело домой ламерить.
← →
Romkin © (2004-09-07 16:14) [309]Суслик © (07.09.04 16:12) [308] Поздравляю. Скорее всего, ты не знаешь и TContainedObject & TAggregatedObject, а оне в System описаны :)
Кстати, вот строчка из дельфийского хелпа:
For more information about aggregation, controlling objects, and interfaces, see the Inside OLE, second edition, by Kraig Brockschmidt, the Microsoft Web site, or the Windows SDK Help.
:))))
← →
Суслик © (2004-09-07 16:17) [310]
> Romkin © (07.09.04 16:07) [307]
Вообще на практическом использовании НЕдиспинтерфейсов тебе будет сложно меня поймать.
Дело в том, что я их весьма часто использую.
И фактически инкапсуляция частей программы реализована через них. В настоящий момент прорабатывается вынос одной части на сервер приложений. С транспортом пока не решено. Скорее всего будет свой.
Поэтому несмотря на то, что ин-сы можно было бы и не использовать, они все же используются для дальнейшего облегчения выделения сервера приложений. Пока приходится мириться с подмесом моделей инт. и об. Но это не надолго.
Поэтому сложно представить, что используя interface в крупном проекте я испытываю недостаток знаний.
← →
Суслик © (2004-09-07 16:18) [311]
> Romkin © (07.09.04 16:14) [309]
Почему такой вывод. У меня половина проекта на них сделана.
Как это связано с dispinterface?
← →
Ihor Osov'yak © (2004-09-07 16:19) [312]2 Romkin © (07.09.04 15:45) [293]
> Да обычно и знать-то не надо.
С этим согласен вполне.
> Но если понадобится - запроси IUnknown и сравни два указателя :))
А вот это не факт. Вспоминаем агрегаты. Давай на примере.
Есть некий обьект, поставляющий интерфейсы IA, IB, IC.
Естественно, он же предоставляет IUnknown.
Я, как разработчик этого некого обьекта, знаю, что он IA реализовывает IA самостоятельно, а IB и IC агрегитирует у некоторых внутренних обьектов. Причем IB пердоставляет обьект oB, а IC реализовыватся oC. И что бы ты (как пользователь) не спрашивал у интерфейсов IC и IB - извне ты никак не узнаешь, что они агрегитированы и реализуются (хостятся) класами, отличными от класса, который хостит IA (oB и oC, а не oA).
Я это к тому, что вопрос "Реализуются ли все эти интерфейсы одним классом?" в общем случае бессмысленный. Даже хотя бы потому, что сделать поддержку интерфейсов в принцыпе можно и за пределами обьекно-ориентированой парадигмы, даже средствами старого доброго чисто процедурного кодирования. И понятия там такого, как класс не будет вообще..
Если же говорить не об экземпляре класса, а о СOM-обьекте, то твой вопрос имет смысл.. И естественно, в таком случае задача решается сравнением IUnknown. Что с успехом и не единыжды уже делаю давно :-).
Ps. "Уточните значения слов - и вы избавите человечество от половины проблем". с. Декарт, кажется.
← →
Romkin © (2004-09-07 16:21) [313]Суслик © (07.09.04 16:18) [311] НУ никак не связана. Тогда ф удивлен, что ты не ответил на Romkin © (07.09.04 15:59) [300]
Прикалываешься?
И, кстати, откуда у тебя dispinterface всплыл? Я о нем не спрашивал ;)
← →
Акуличев Дмитрий (2004-09-07 16:22) [314]
> Ihor Osov"yak © (07.09.04 16:00) [301]
> 2 [276] Акуличев Дмитрий (07.09.04 15:16)
>
> > Интерфейсы появились отнюдь не в COM.
>
> Хм. Имнтерфейсы - как понятие - понятно. Но вот обладающими
> свойствами, перечислеными в [271], наследуемые от IUnknown?
> Или хотя бы без последнего условия?
>
> Был бы благодарен за ссылку на источник информации.
Ссылок, боюсь, не дам. Дело в том, что эти требования не каким-то нормативным документом устанавливались, а вырабатывались в процессе исследований по проблемам открытых компонентных систем, когда стало очевидно, что для построения оных необходимо средство, ортогональное классическому ООП.
Так вот уж как-то получилось, что три постулата и одно следствие (у меня -- первый постулат) оказались минимальной непротиворечивой системой соглашений, удовлетворяющих требованиям к построению компонентных систем.
А вот наследование от IUnknown, кстати, необязательное требование, это уже особенности конкретной среды исполнения.
← →
Суслик © (2004-09-07 16:26) [315]
> Romkin © (07.09.04 16:21) [313]
> Суслик © (07.09.04 16:18) [311] НУ никак не связана. Тогда
> ф удивлен, что ты не ответил на Romkin © (07.09.04 15:59)
> [300]
> Прикалываешься?
Нет, просто не знаю дельфовые компоненты Db. Совсем.
> И, кстати, откуда у тебя dispinterface всплыл? Я о нем не
> спрашивал ;)
сам не знаю.
← →
Ihor Osov'yak © (2004-09-07 16:31) [316]2 [314] Акуличев Дмитрий (07.09.04 16:22)
> А вот наследование от IUnknown, кстати, необязательное требование, это уже особенности конкретной среды исполнения.
Это понятно, без вопросов..
> Ссылок, боюсь, не дам. Дело в том, что эти требования не каким-то нормативным документом устанавливались, а вырабатывались в процессе исследований по проблемам открытых компонентных систем, когда стало очевидно, что для построения оных необходимо средство, ортогональное классическому ООП.
Ну, в таком случае должны быть околонаучные публикации, какие-то рекомендации более-менее авторитетных коммисий... Действительно интересно получить наводку на источник.
Хотя, действительно, я нигде не встречал утверждения о том, что интерфейсы - изобретение майкрософт. Это на них не похоже. Если они что-то придумали - то обычно не стесняются это повторять. Еще - где-то читал что некое подобие идеологии интерфейсов в том смысле что класс имеет неснолько програмных интервейсов существует в яве. Но с явой я совершенно не знаком.
← →
Суслик © (2004-09-07 17:42) [317]Прошу прощения за подъем темы.
Это не повод продолжить обсуждение, а возможность для меня:
1) Поблагодарить всех за обсуждение. Честное слово - оно было продотворно.
2) Извиниться перед Акуличевым (если, конечно, его обидел) за пренебрежительное отношение к его любви к чтению.
Всем всего хорошего.
ЗЫ. Считаю, что холи вор кончилась весьма мирно, что радует.
← →
Romkin © (2004-09-07 17:47) [318]Ага. Я всегда говорил, что работа с СОМ в сях - полный отстой по сравнению с Delphi :))
← →
GrayFace © (2004-09-07 17:56) [319]Суслик © (06.09.04 20:08) [182]
Если ты пользуешься ansi строками, дин массивами и штатным манагером памяти обсолютно для всех целей, то о скорости говорить не приходится. Выигрышь в прибавлении чисел к поинтерам будет мал.
И даже не имхо.
Акуличев Дмитрий (06.09.04 20:22) [192]
Меня больше необходимость этого для других типов интересует.
Для работы с массивами.
Игорь Шевченко © (06.09.04 21:36) [198]
Переведи пожалуйста свою глубокую мысль на понятный язык, можно на С++, можно на Delphi (это такой намек на пример в студию...)
Код в C:Return 12
Код в Delphi:begin
Result:=12;
exit;
end;
Если бы была макроподстановка, можно было бы сделать макрос return.
> > Интерфейсов по-нормальному зделана в Java - там это
>вообще
> > не сущьность, а как-бы класс объекта, но без
>методов. COM-интерфейсы
> > для таких нужд мало пригодны, а множественное
>наследование
>> - очень даже.
>
> Опять же, поясни.
Ну если два потомка разных классов, сходны по функциональности.
И надо такое: В Java мы можем подать объект одного из этих классов в функцию, которая потом может не только работать с его интерфейсом, но и, например, удалить объект. В Delphi: Подаем функции интерфейс, а функция может общаться только с этим интерфейсом - объект ей не доступен(интерфейс as объект = ругань). Еще то, о чем говорит Суслик... Но я чуть-чуть знаком с интерфейсами. Я базируюсь на том, что это сущьность, отделенная от объекта.
> В ШКОЛУ!
Поздно уже. Я в универе на 1-м курсе.
> Чтобы перестать говорить чушь, открой окно CPU и
> посмотри генерируемый код.
Ну смотрите:
← →
GrayFace © (2004-09-07 18:01) [320]Удалено модератором
Примечание: Offtopic
Страницы: 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 1.09 MB
Время: 0.148 c