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

Вниз

в чем смысл   Найти похожие ветки 

 
vecna ©   (2004-09-28 14:47) [0]

конструкции Assigned(Self) в методах объекта?


 
DiamondShark ©   (2004-09-28 14:50) [1]

Защита от дурака.


 
Fay ©   (2004-09-28 19:32) [2]

2 DiamondShark ©   (28.09.04 14:50) [1]
И что она даёт?


 
wicked ©   (2004-09-28 19:50) [3]


> И что она даёт?

гы... защищает от дурака.... :)

а если серьезно, то защита состоит в том, чтоб не вызывали методы обьекта по nil"ной ссылке на этот обьект... хотя если метод виртуальный или dynamic, то нифига оно от AV не спасет...


 
Vlad ©   (2004-09-28 20:01) [4]


> wicked ©   (28.09.04 19:50) [3]


> защита состоит в том, чтоб не вызывали методы обьекта по
> nil"ной ссылке на этот обьект

что-то не понял, разве есть способы вызвать метод объекта по nil-ной ссылке не получив при этом AV ?


 
KilkennyCat ©   (2004-09-28 20:03) [5]

а я думал наследование...


 
Суслик ©   (2004-09-28 20:03) [6]


>  хотя если метод виртуальный или dynamic, то нифига оно
> от AV не спасет...

а нечего клиенту виртуальные методы вызывать :))


 
Суслик ©   (2004-09-28 20:04) [7]


>  [4] Vlad ©   (28.09.04 20:01)


> что-то не понял, разве есть способы вызвать метод объекта
> по nil-ной ссылке не получив при этом AV ?

Метод free например.
знаешь такой?


 
jack128 ©   (2004-09-28 20:29) [8]

2Vlad
type
 TTest = class
   procedure Test;
 end;

procedure TForm1.Button1Click(Sender: TObject);
var
 t: TTest;
begin
 t.Test;
end;

{ TTest }

procedure TTest.Test;
begin
 ShowMessage("test");
end;
Суслик ©   (28.09.04 20:04) [7]
Метод free например

Не только. Любой статический метод, который не обращается к своим полям..


 
Суслик ©   (2004-09-28 20:32) [9]


> Не только

потому я и сказал "например".


 
DrPass ©   (2004-09-28 20:46) [10]


> что-то не понял, разве есть способы вызвать метод объекта
> по nil-ной ссылке не получив при этом AV ?

Метод объекта нельзя. А вот статический метод класса - можно.


 
Константинов ©   (2004-09-28 22:20) [11]

Может я немного не в тему, допустим я вызываю свойство-событие объекта:

MyObject.OnChange(Self);

а обработчик не назначен.

Успешно ловим AV и никакой Assigned не помогает.

Как, при создании классов обойти это?


 
wicked ©   (2004-09-28 22:32) [12]

> Константинов ©   (28.09.04 22:20) [11]
if Assigned(MyObject.OnChange) then
   MyObject.OnChange(Self);

а так?.....


 
wicked ©   (2004-09-28 22:41) [13]

по мотивам
> wicked ©   (28.09.04 22:32) [12]
обычно компоненто- и классо-писатели такие моменты заворачивают в методы вида DoSomething:
procedure MyObject.DoChange(Sender: TObject);
begin
   if Assigned(OnChange) then
       OnChange(Sender);
end;

и вызов:
MyObject.DoChange(Self);

ЗЫ за ошибки не пинать - на паскале не пишу уже больше полутора лет.... :)



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

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

Наверх




Память: 0.5 MB
Время: 0.054 c
14-1096025807
Dmitriy O.
2004-09-24 15:36
2004.10.17
Конвертирование BMP в векторную графику и 3D


1-1096646043
Homa_Programer
2004-10-01 19:54
2004.10.17
Перенос текста на новую страницу...


14-1096508757
Думкин
2004-09-30 05:45
2004.10.17
С днем рождения! 30 сентября


1-1096435775
Vint
2004-09-29 09:29
2004.10.17
нужно перехватить сообщение об открытии окна (наверное)


6-1092175681
НовиЧок
2004-08-11 02:08
2004.10.17
Помогите избавиться от загрузки картинок при просмотре страницы в