Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.16;
Скачать: CL | DM;

Вниз

Вызов метода дедушки   Найти похожие ветки 

 
Th ©   (2002-12-03 16:12) [0]

Напомните, плз, как вызвать метод дедушки не вызывая метода папы. Задача простая - надо обойти вызов метода TOpenPictureDialog, потому что он template плохой ставит.


 
Th ©   (2002-12-03 16:13) [1]

Забыл указать - метод TOpenPictureDialog.Execute


 
Dimka Maslov ©   (2002-12-03 16:36) [2]

type
TFunc = function (Self: TObject): Boolean;

function TSomeClass.Func: Boolean;
var
Func: TFunc;
begin
Func := @TGrandfatherClass.Func;
Result := Func(Self);
end;


 
Th ©   (2002-12-03 16:44) [3]

Пасиба, все сработало, только у TOpenDialog.Execute нет параметра Self:TObject, у нее вообще нет параметров. Но это не принципиально.


 
DarkGreen ©   (2002-12-03 19:47) [4]

У любого процедуры (функции) принадлежащей классу есть один параметр, называемый Self. Передается в делфях через регистр eax, так что и у TOpenDialog.Execute есть параметр Self, просто его реализация скрыта.


 
Fantasist ©   (2002-12-03 20:34) [5]


> Передается в делфях через регистр eax


Зависит от соглашения вызова. В stdcall - передается через стек, хотя после этого сразу записывается в eax.


 
DarkGreen ©   (2002-12-04 05:53) [6]


> Зависит от соглашения вызова. В stdcall - передается через
> стек, хотя после этого сразу записывается в eax.

Угу, согласен, про stdcall я как-то не подумал :-)


 
Fantasist ©   (2002-12-04 06:39) [7]


> стек, хотя после этого сразу записывается в eax.


Ага, я тоже поторопился. При оптимизации, он его записывает его куда ему больше понравиться, а не обязательно в eax. Без оптимизации он его никуда не записывает, а все время считавает из ebp+8 при каждом обращении. D6. Но на самом деле это совершенно неважно, кроме того случая, с которым я сейчас работаю.


 
Dimka Maslov ©   (2002-12-04 09:19) [8]

>Fantasist
Куда запишется Self при оптимизации - неважно, и неважно также и формат вызова. Важно, что Self передаётся неявно, как первый параметр вызываемого метода.


 
DarkGreen ©   (2002-12-04 09:42) [9]

2 Fantasist: Заметил что в конструкторах объектов зачаутую self сидит в ebx, у нас из-за этого куча проблем была :-)


 
Fantasist ©   (2002-12-04 23:18) [10]


> Куда запишется Self при оптимизации - неважно, и неважно
> также и формат вызова


См. меня:


> Fantasist © (04.12.02 06:39)
> ....
> Но на самом деле это совершенно неважно, кроме того случая,
> с которым я сейчас работаю.


Есть редкие случаи, когда это важно.



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

Текущий архив: 2002.12.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
14-51902
blackweber
2002-11-24 18:07
2002.12.16
Если кто еще не забыл QBasic прошу помочь


3-51641
SemFLY
2002-11-28 17:18
2002.12.16
Иформация о базах...


1-51794
Vagrant
2002-12-05 06:42
2002.12.16
SHAREMEM


7-51976
msgipss
2002-10-16 10:46
2002.12.16
сорри, предыдущая мессага не в тему, Как проверить работу колеса


1-51733
-= Demon =-
2002-12-06 13:58
2002.12.16
Уникальное имя файла...