Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2014, 01:38   #1
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию обращение к приватным переменным

Доброго времечка! И сразу вопрос, в модуле Vcl.Forms в TApplication.CreateForm вот такой магический код:
Код:
TForm(Instance).FCreatingMainForm := False;
если кто не понял сразу, FCreatingMainForm приватная переменная:
Код:
  
TCustomForm = class(TScrollingWinControl)
private
  ...
  FCreatingMainForm: Boolean;
  ...
end;

TForm = class(TCustomForm)
  ...
end;
сам TApplication это class(TComponent), может это добавляет магию к происходящему, создал такой же класс и в нем форму,
Код:
  
MainForm:=TMainForm.Create(Application);
TForm(MainForm).FCreatingMainForm := False;
но повторить трюк у себя не получается, подскажите\разъясните, вшили это в язык или не хватает чего?
пыжок

Последний раз редактировалось maloun; 24.08.2014 в 01:51.
maloun вне форума Ответить с цитированием
Старый 24.08.2014, 02:01   #2
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

всё понял, ответ нашел тут http://www.sql.ru/forum/700682-2/kak-dostat-private
пыжок
maloun вне форума Ответить с цитированием
Старый 24.08.2014, 02:50   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от maloun Посмотреть сообщение
всё понял, ответ нашел тут http://www.sql.ru/forum/700682-2/kak-dostat-private
И действительно работает?
northener вне форума Ответить с цитированием
Старый 24.08.2014, 09:11   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Так надо же TCustomForm(MainForm).FCreatingMain Form := False;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.08.2014, 11:38   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а в формс там случаем класс TForm и TApplication не вместе расположены?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.08.2014, 15:22   #6
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а в формс там случаем класс TForm и TApplication не вместе расположены?
точно, по этому у них работало, а у меня нет

Цитата:
Сообщение от Stilet Посмотреть сообщение
Так надо же TCustomForm(MainForm).FCreatingMain Form := False;
может и надо, на XE5 не работает (Cannot access private symbol =) )

мне достаточно нормального объяснения почему у них работает, а у меня нет,
если приспичит напишу хелпер или вытащу из памяти по офсету, а пока Application.CreateForm
пыжок

Последний раз редактировалось maloun; 26.08.2014 в 15:41.
maloun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение как к функции или обращение после опрд действия Gefo JavaScript, Ajax 5 04.02.2013 08:55
Как сделать сайт приватным? w00 PHP 6 07.12.2010 13:41
Вопрос по переменным ronston Общие вопросы C/C++ 6 06.10.2010 10:27
присвоить из бд переменным akimov_aleks БД в Delphi 6 07.04.2010 08:24
Доступ к переменным RealSHELS Общие вопросы Delphi 4 15.06.2008 13:14