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

Вниз

Не могу понять почему это работает :)   Найти похожие ветки 

 
Strate ©   (2007-05-09 20:03) [0]

Здравствуйте.

Мне вот просто интересно почему такое работает:

TFrom1 = class(Tform);
...
 public
   function ShowDialog: integer;

end;

.....

var
 Form1 : TForm1;

.....

function TForm1.ShowDialog : integer;
begin
 Self := TForm1.Create(Application.MainForm);
 ShowModal;
 Self.Free;
end;


Форма убрана из auto-create.

Из другой формы вызываю:

Form1.ShowDialog;

и всё работает, но ведь Form1 ещё не проинициализирована, как же удалось получить доступ к внутреннему методу?


 
sniknik ©   (2007-05-09 20:28) [1]

> Мне вот просто интересно почему такое работает:
а оно точно, так работает? ;)

> как же удалось получить доступ к внутреннему методу?
сделай его virtual и не получишь...

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

и, имхо правильнее (если уж нужен такой изврат) делать вот так


TFrom1 = class(Tform);
...
public
 class function ShowDialog: integer;
end;

.....

//var
// Form1 : TForm1;

.....

class function TForm1.ShowDialog : integer;
begin
 with TForm1.Create(Application.MainForm) do
   try
     result:= ShowModal;
   finally
     Free;
   end;  
end;


 
begin...end ©   (2007-05-09 20:41) [2]

> sniknik ©   (09.05.07 20:28) [1]
> with TForm1.Create

with Create. Ещё правильнее.


 
Loginov Dmitry ©   (2007-05-10 00:56) [3]

> Мне вот просто интересно почему такое работает:


В таком коротком участке кода - и столько бреда! Но работает, а с чего оно не будет работать. Формально все в норме. А вот то, что Self можно в методе менять - это, ИМХО, недочет Борланда (лучше бы такой бред вообще не компилил).



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

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

Наверх




Память: 0.47 MB
Время: 0.067 c
6-1164030611
Pack
2006-11-20 16:50
2007.05.27
Сохранить веб страничку как jpeg


6-1164016111
Aleksandr.
2006-11-20 12:48
2007.05.27
Как можно хотя бы узнать программно, открыт ли доступ к порту?


3-1173183501
Чих-Пых
2007-03-06 15:18
2007.05.27
Кодовая страница в TTable


2-1178476227
Dr.M@$
2007-05-06 22:30
2007.05.27
read write pixel (hight fps)


15-1177705119
lookin
2007-04-28 00:18
2007.05.27
Имена файлов