Форум: "Потрепаться";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизDelphi vs. C++ Найти похожие ветки
← →
Суслик © (2004-09-08 11:28) [360]
> Romkin © (08.09.04 11:23) [358]
вот кстати вопрос чисто по интерфейсам:
как при передачи интерфейса в качестве параметра в метод управлять механизмом подсчета ссылок?
← →
Romkin © (2004-09-08 11:29) [361]Кстати, возвращаясь к нашим баранам, "удобству" вызова Invoke мы обязаны, как ни смешно, визуалбейсиковцам :(
Дело в том, что в VB исторически сложилось, что, например, процедуру proc(A,B,C) можно вызвать:
proc(1,2,3) и proc(1,,3) и, главное, proc(B=2,C=3,A=1).
И теперь, даже вызывая Invoke из С, вы должны подать не только массив входных значений, но еще и массив соответствующих имен этих параметров (и, эссно, имена должны знать)
:)))
← →
Danilka © (2004-09-08 11:30) [362]Так все-таки, что лучше, Дельфи или С++?
А то, наговорили ужо за три сотни с половиною, а так и непонятно, что-же лучше.
;)
← →
Romkin © (2004-09-08 11:31) [363]Суслик © (08.09.04 11:28) [360] Если параметр имеет тип интерфейс - делать ничего не нать. Если поинтер - плиз, addref/release сам делай.
← →
Romkin © (2004-09-08 11:31) [364]Danilka © (08.09.04 11:30) [362] Лучше тот язык, который ты знаешь. Все остальное - суета сует и протчая...
← →
Danilka © (2004-09-08 11:33) [365][364] Romkin © (08.09.04 11:31)
Эт я и сам знаю, лучче PL/SQL ничего нет.
Мне просто интересно, итог у ветки будет или нет.
:))
← →
Суслик © (2004-09-08 11:33) [366]
> Romkin © (08.09.04 11:31) [363]
я не говорю, что нать, а что не нать.
Вопрос: как можно?
← →
Суслик © (2004-09-08 11:34) [367]
> Romkin © (08.09.04 11:29) [361]
Дай что-нить почитать про invoke.
Когда я хармона читал, я это как-то пропустил, т.к. не понял - в тот момент мне это показалось ненужным, может и зря.
← →
Суслик © (2004-09-08 11:35) [368]
> Мне просто интересно, итог у ветки будет или нет.
> :))
Конечно - ее закроют.
← →
0d08h (2004-09-08 11:38) [369]Danilka
Лучше то что ты лучше умееш использовать.
Все остальное суета сует и сметение духа.
← →
Акуличев Дмитрий (2004-09-08 11:39) [370]
> И теперь, даже вызывая Invoke из С, вы должны подать не
> только массив входных значений, но еще и массив соответствующих
> имен этих параметров
А вот и неправда.
← →
Danilka © (2004-09-08 11:39) [371][369] 0d08h (08.09.04 11:38)
Дык, а если я ни дельфи ни ц++ низнаю, что делать-то?
Хотел здеся разобрацца, а вижу один оффтопик - интерфейсы, причем здесь лучше/нелучше? :))
← →
Romkin © (2004-09-08 11:40) [372]Суслик © (08.09.04 11:33) [366] Ну как? хочешь отключить автомат - преобразуй к pointer :))
Суслик © (08.09.04 11:34) [367] Хм... Ищи книгу "СОМ и ATL" вроде, толстая такая. Там - практически все :)) Но на С++. Но зато понимаешь, что и как работает. Половина книги - программирование СОМ на С++ без ATL - эт фундаментально. Знакомый хвастался, что по ней сделал класс, реализующий полностью IDispatch без ATL. Мдя... 15 кило текста :)))
Ну и рекомендация Borland уже была:
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-08 11:41) [373]
> Danilka © (08.09.04 11:39) [371]
Забей - не разберешься.
Учи оба языка и дело с концом. Какой не понравится срочно забудешь.
← →
Суслик © (2004-09-08 11:42) [374]
> Romkin © (08.09.04 11:40) [372]
> Суслик © (08.09.04 11:33) [366] Ну как? хочешь отключить
> автомат - преобразуй к pointer :))
это один из способов,
второй
procedure proc(const i: IMyIntf);
← →
Romkin © (2004-09-08 11:43) [375]Суслик © (08.09.04 11:34) [367] Но чисто вызов invoke со сборкой параметров - нафиг :) В Delphi уже написано...
← →
0d08h (2004-09-08 11:43) [376]Danilka
Учи Паскаль он проще только не дай бог не Дельфи с нуля именно Паскаль.
Есть такая книженция К. Боон "Паскаль для всех" 1983 г. по нему можно кого угодно научить сам с нее начинал
← →
Romkin © (2004-09-08 11:44) [377]Суслик © (08.09.04 11:42) [374] А. Да, не должен вроде. Если так - то хорошо. Но мне до сих пор ни разу не понадобилось управлять подсчетом ссылок :))
Нет, вру, один раз, когда интерфейсы вставлял в список как указатели...
← →
Danilka © (2004-09-08 11:45) [378][373] Суслик © (08.09.04 11:41)
В том-то и дело, что учил оба, а теперь уже оба забыл. Горе-то какое. А учить оба заново - низя - старый я, память уже не та.
Порошу модераторов изничтожить весь оффтопик! Пусть лучше здесь крутые распальцованые перцы разбираюцца, что есть рулез, а что есть зло, а обсуждателей интерфейсов выгнать в другую ветку. Вот-так!
:))
← →
Суслик © (2004-09-08 11:45) [379]
> Romkin © (08.09.04 11:43) [375]
Если я ошибаюсь - к раннему связыванию это отношения не имеет?
← →
Акуличев Дмитрий (2004-09-08 11:45) [380]
> Суслик © (08.09.04 11:42) [374]
> второй
> procedure proc(const i: IMyIntf);
Это не отключает подсчёт ссылок.
← →
Суслик © (2004-09-08 11:47) [381]
> Romkin © (08.09.04 11:44) [377]
не может быть, а точно.
это я так, для информации сказал.
> Danilka © (08.09.04 11:45) [378]
Ага :))) Когда я читал Рихтера, я тоже вспомнил, что его читал - лет 5 назад, только прошлое издание :)))) Типа того?
ТАкого не бывает - если учил, забыть нельзя.
← →
Суслик © (2004-09-08 11:47) [382]
> Акуличев Дмитрий (08.09.04 11:45) [380]
> Это не отключает подсчёт ссылок.
А ты проверь?
← →
Romkin © (2004-09-08 11:52) [383]Суслик © (08.09.04 11:45) [379] Конечно. Позднее потому и называется так, что все вызовы идут через invoke
← →
Суслик © (2004-09-08 11:53) [384]
> Romkin © (08.09.04 11:52) [383]
вот, а про позднее я ничего и не знаю.
А для чего ты его используешь если НЕ для ком?
← →
Romkin © (2004-09-08 11:54) [385]Суслик © (08.09.04 11:53) [384] Что значит НЕ для СОМ? Я кроме СОМ ничем и не пользуюсь :)
← →
Суслик © (2004-09-08 11:55) [386]
> Акуличев Дмитрий (08.09.04 11:45) [380]
В зависимости от const в начале метода либо будет
00452381 E8363CFBFF call @IntfAddRef
либо
нет
Проверь, только что посмотрел.
← →
Суслик © (2004-09-08 11:55) [387]
> Romkin © (08.09.04 11:54) [385]
значит мне сейчас это не надо.
← →
Romkin © (2004-09-08 12:05) [388]Суслик © (08.09.04 11:55) [387] НУ наверно можно, конечно, чделать свой транспорт и делать удаленные вызовы - к другому процессу, например. Но нафига, если все уже в СОМ сделано.
Сейчас не надо - может быть. Но СОМ я посоветовал бы изучить, как только входишь во вкус...
Когда тебе не важно, где именно находится объект, ты им просто пользуешься, да еще вся информания записана сразу в нем :))
Да и просто применению интерфейсов помогает, понимаешь, какие методы и какие классы должны быть
← →
Суслик © (2004-09-08 12:09) [389]
> Romkin © (08.09.04 12:05) [388]
КОМ наверное прийдется изучать.
При том, что как писать КОМ в дельфи я в общем-то знаю. В проекте есть пара объектов. Но, согласен, все это на уровне понимания внешний проявлений и правил использования.
С тем, что ком помогает пониманию интерфейсов позволь несогласится. Хотя, стоит проверить.
← →
Акуличев Дмитрий (2004-09-08 12:15) [390]
> Суслик © (08.09.04 11:55) [386]
Если параметр не конст, то он внутри процедуры обрамляется дополнительной парой addref/release. Если он конст -- то нет.
Но это не значит, что вообще не ведётся подсчёт ссылок.
В зависимости от того, что происходит внутри процедуры компилятор будет вызывать addref/release там, где это надо.
← →
Суслик © (2004-09-08 12:18) [391]
> Акуличев Дмитрий (08.09.04 12:15) [390]
> В зависимости от того, что происходит внутри процедуры компилятор
> будет вызывать addref/release там, где это надо.
В этом ты абсолютно прав. Я утвержал/спрашивал обратное?
>>как при передачи интерфейса в качестве параметра в метод управлять механизмом подсчета ссылок?
← →
GRAND25 © (2004-09-08 12:21) [392]Все хорошо, только причем тут Делфи и С++? Ветка вроде бы об этом, а не о легкости программирования междумордий.
Поэтому пишу по сабжу: оба обсуждаемых языка хороши, помиритесь.
Долой Спартак!
← →
Суслик © (2004-09-08 12:24) [393]
> GRAND25 © (08.09.04 12:21) [392]
здесь уже постов 200 оффтоп :)))
про дельфи и си уже никто вроде не спорит.
← →
Акуличев Дмитрий (2004-09-08 12:25) [394]
> Суслик © (08.09.04 12:18) [391]
> >>как при передачи интерфейса в качестве параметра в метод
> управлять механизмом подсчета ссылок?
Ну если так, то ответ -- никак.
Модификатор параметра управляет механизмом подсчёта не при передаче, а внутри процедуры.
Вот такой я злой занудный формалист ;)
← →
Акуличев Дмитрий (2004-09-08 12:27) [395]
> про дельфи и си уже никто вроде не спорит.
Да кому этот си нуфиг нужен...
← →
Суслик © (2004-09-08 12:34) [396]
> Акуличев Дмитрий (08.09.04 12:25) [394]
Ой, улыбнулся! Ну радостно :))
Все же тут надо внести ясность.
Если внутри процедуры вызывать методы ин-са и в случае const никакого подсчета ссылок не будет.
Т.е. если написать const и не присваивать внутри метода интерфейс, то можно сказать, что мы смогли направить механизм согласно моему вопросу - ни разу за время работы методы addref не изменится.
← →
euru © (2004-09-08 12:38) [397]Насколько я знаю, посчёт ссылок ведётся только в СОМ и в реализации интерфейсов в Delphi (там их изначально под COM подгоняли).
В Java и CORBA, если я не ошибаюсь, этого нет.
Кстати, в .Net вроде бы тоже уже не упоминается AddRef, ReleaseRef и QueryInterface.
← →
Игорь Шевченко © (2004-09-08 12:41) [398]Акуличев Дмитрий (08.09.04 12:27) [395]
> Да кому этот си нуфиг нужен...
Прямо удивительно. И синтаксис непонятный и для работы с интерфейсами неудобно. Сколько же ежиков плачут, колются, но продолжают грызть кактус :)
← →
Суслик © (2004-09-08 12:46) [399]Можно поднять еще один вопрос о дельфи?
Наверное все знают, что есть такие функции finalize и initialize и все знают, что они делают.
Это очевидный compile magic.
Вы не найдете явного их объявления нигде - их или их аналоги вставляет компилятор в код.
Фактически они эксивалетны _finilize и _initialize из system.
Рядом с _finilize есть _AddRef. Который понятно , что делает из названия.
Вопрос: Почему _AddRef не вынесен в доступную фукнкция, как это сделано для finlize и initilize? Как вы думаете, в чем причины?
← →
Акуличев Дмитрий (2004-09-08 12:55) [400]
> Сколько же ежиков плачут, колются, но продолжают грызть
> кактус :)
А ещё миллион мух не может ошибаться.
:)
Страницы: 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 1.07 MB
Время: 0.19 c