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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
14-1096276126
WondeRu
2004-09-27 13:08
2004.10.17
Конец демократии или проблема 2008 года решена!


14-1096099298
raymond
2004-09-25 12:01
2004.10.17
Проблема рууской кодироки в WinXP...


1-1096944503
SDA
2004-10-05 06:48
2004.10.17
Крупный либо мелкий шрифт!!!???


14-1096263923
Holy
2004-09-27 09:45
2004.10.17
DVD


1-1096530029
Pushkin
2004-09-30 11:40
2004.10.17
Как из VС передать массив в DLL на Делфи





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский