Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];

Вниз

Dynamic-методы в объектах старого стиля - что это такое изнутри?   Найти похожие ветки 

 
PVOzerski   (2002-04-05 13:30) [0]

Урывками, на досуге взялся было переписать Object Windows для FPC, взяв за основу интерфейсную часть от TPW (вроде бы, если не ошибаюсь, такие действия не являются нарушением (С) Borland?).
Наткнулся на синтаксическую конструкцию, с к-рой до сих пор дела не имел.

В описании метода объекта:

procedure MyProcedure(var msg);virtual index WM_SOMEMESSAGE;
(иногда со словом index, иногда без). В хелпе нашел, что это
динамические методы, использование к-рых примерно такое же, как
виртуальных. Но ведь явно, что здесь эта штука используется с
той же целью, что и procedure MyProcedure(var msg);message WM_SOMEMESSAGE; в классах Дельфийского стиля. Но как, ведь предопределенного метода Dispatch старые объекты не имеют?

Ситуация осложняется тем, что подобный синтаксис не поддерживается FPC, а динамческие методы у него есть только в классах Дельфийского стиля (естественно, без индексов), и то как фактический синоним virtual (я смотрел, во что FPC компилирует те и другие), так что, возможно, придётся править компилятор...


 
vuk   (2002-04-05 13:41) [1]

В старой модели объектов не было явного разделения на virtual, dynamic и message.

На самом деле ситуация такая:
OP:
virtual - виртуальный метод
dynamic - динамический метод, индекс назначается компилятором неявно
message - динамический метод, индекс назначен явно, ограничения на вид параметров

BP:
virual - виртуальный метод
virtual [index] - динамический метод, индекс назначается явно

Объекты старого образца не имеют метода Dispatch, в OWL все делалось через прямое обращение к таблице динамических методов. Посмотреть сейчас негде, но если поищете в исходниках, то найдете - смотрите в оконные процедуры.


 
vuk   (2002-04-05 13:45) [2]

Да, кстати. Dispatch в OP именно к таблице динамических методов и обращается, и формат ее с тех пор, кажется, не особо изменился...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.007 c
3-57638
Alxn
2002-03-28 14:22
2002.04.18
Имя текущего поля


14-57841
Ajax
2002-03-07 17:55
2002.04.18
Задачка...


1-57782
Migs
2002-04-06 01:59
2002.04.18
Help!!!


3-57621
IronHawk
2002-03-27 18:55
2002.04.18
Как в обыкновенной форме подключенной к базе через DBGrid, ....


1-57672
lipskiy
2002-04-07 00:15
2002.04.18
TStringList не хочет грузится из TStringStream





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский