flint2 писал(а):
Вопрос такой - каков механизм того и другого?_hi_OnEvent -- работает "по настоящему".
Т.е., делает реальный функциональный вызов некого метода некоторого объекта. Которые записаны в структуре THI_Event при инициализации объекта.
После чего, возвращаясь из этого вызова, продолжает выполнять последующий код.
А вот _hi_CreateEvent не делает "почти ничего". Он просто немножечко модифицирует структуру TData. И никого не вызывает.
В этой структуре есть хитрое поле Next, в которое заносится значение, обозначенное Вами как _event_Name.
Больше он не делает ничего (разве что взводит старший бит в поле TData.data_type - для надежности), продолжая исполнять последующий код.
Использование поля Next происходит уже очень потом, при полном окончании исполнения метода, в котором и применялся _hi_CreateEvent.
Примерно здесь (share.pas):
#pas
procedure __hi_OnEvent(const PointEvent:THI_Event;var Data:TData);
var P:PHI_Event;
begin
P := @PointEvent;
while Assigned(P.Event) do begin
{$ifdef _DEBUG_}CallEvent(2,P^,Data);{$endif}
P.Event(Data,P.Index); //а потом ТУТА
if(Data.data_type and $80)=0 then break;
dec(Data.data_type,$80);
P := PHI_Event(Data.next); //сначала ЗДЕСЯ
end;
end;
По простому: _hi_CreateEvent не делает функционального вызова, а поручает сделать его своему "предшественнику"
Экономим стек (точнее, снимаем ограничение по стеку на длину последовательных вызовов).
В качестве побочного эффекта - начинают работать некоторые "кольцевания" (точнее, тот OnEvent, который исполняется как _hi_CreateEvent - уже можно "закольцовывать")
------------ Дoбавленo в 07.49:
flint2 писал(а):
Интересны формулировки механизмов нижних (и верхних) точек в случае EventFromData - Генерирует событие при обращении к данным.Ну да: генерирует событие при обращении к данным. Обратился --> Сгенерировалось событие --> Возвращается результат, который то самое событие передало на doData.
Непонятно, вопрос то в чем


flint2 писал(а):
С точками доступа к элементам массива вопросов наверное не у кого не возникает, но для комплекта ... - начинающие будут благодарны.Опять непонятно, вопрос то в чем

