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

Вниз

Объект nil, а метод вызывается!!!   Найти похожие ветки 

 
Grant   (2009-11-27 13:13) [0]

Всем привет. Объясните пожалуйста следующую осебенность Делфы.
Создаю приложение. Создаю ещё один юнит.
Код юнита:
unit Unit2;

interface

uses
 SysUtils, Dialogs;

type
 TGrant = class
   public
     procedure Met;
 end;

implementation

procedure TGrant.Met;
begin
 ShowMessage("aaa");
end;

end.

На главной форме добавляю в uses новый юнит(unit2) и пишу следующий код обработчика щелчка кнопки:

procedure TForm1.Button1Click(Sender: TObject);
var
 vGrant: TGrant;
begin
 vGrant.Met;
end;

При отладке переменная vGrant = nil. При этом метод выполняется и выводится на экран окно с сообщением. Вопрос: КАК??? Ведь переменная nil. Заранее спасибо.


 
Плохиш ©   (2009-11-27 13:17) [1]


> Вопрос: КАК??? Ведь переменная nil.

Ну и что, в методе нет обращений к несуществующем переменным/полям.
Сделай поле в классе, вставь вывод его значения в своём методе и получишь своё желаемое исключение.


 
RWolf ©   (2009-11-27 13:44) [2]

Виртуальные методы вызываться не будут, т.к. чтобы их вызвать, нужно получить их адрес через VMT, которая заполняется при создании объекта.
А невиртуальные — пожалуйста, их адрес известен на этапе компиляции.


 
Ухарь   (2009-11-27 21:22) [3]

В данном случае (в случае невиртуального метода) его можно рассмотреть как процедуру с неявным параметров Self: TMyObject;
В данном случае она имеет значение nil;

если вы внутри процедуры к этой переменной не обращаетесь, ничего неожиданного и не случится



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

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

Наверх





Память: 0.45 MB
Время: 0.005 c
2-1259557867
Androna
2009-11-30 08:11
2010.01.17
Запрет отрисовывки фокуса у TButton


15-1257939335
ZeroDivide
2009-11-11 14:35
2010.01.17
Очереной отжиг от Google


1-1233807030
megaadmin
2009-02-05 07:10
2010.01.17
DLL и завершение работы Windows


15-1258407015
Юрий
2009-11-17 00:30
2010.01.17
С днем рождения ! 17 ноября 2009 вторник


2-1258722733
Andrewtitoff
2009-11-20 16:12
2010.01.17
Форма





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