Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое создание формы + проверка при создани 
:(
    Опции темы
harakiri
Дата 11.3.2013, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 17.1.2011

Репутация: нет
Всего: нет



Здравствуйте. Есть форма, которая создается динамически.
Код

mot := TmotionInOut.Create(Application);

Создает без проблем. После данного действия хотелось бы выполнить следующие операторы:
Код

 if motionInOut.chk2.Enabled = False then
    motionInOut.chk2.Enabled  := True;
  dm1.fMotion.Append;
  if motionInOut.chk2.Checked = False then
    motionInOut.chk2.Checked  := True;
  mot.ShowModal;

Ошибка - Access violation... Подскажите, что делаю неправильно. Если
Код

mot.ShowModal;

поставить после оператора создания формы, то форма создается, но последующие операторы не выполняются. Заранее спасибо всем добрым людям помогшим советом.
PM MAIL   Вверх
Akella
Дата 11.3.2013, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(harakiri @  11.3.2013,  11:47 Найти цитируемый пост)
Ошибка - Access violation...


где, в 17ой строке?

Добавлено через 1 минуту и 11 секунд
Цитата(harakiri @  11.3.2013,  11:47 Найти цитируемый пост)
mot := TmotionInOut.Create



Цитата(harakiri @  11.3.2013,  11:47 Найти цитируемый пост)
if motionInOut.


Ты создаешь одну форму "mot", а обращаешься совершенно к другой - "motionInOut"
PM MAIL   Вверх
harakiri
Дата 11.3.2013, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 17.1.2011

Репутация: нет
Всего: нет



Если я вместо "motionInOut" ставлю "mot", то ошибка Undeclared identifier: 'chk2'. Ошибка на 
Код

if motionInOut.chk2.Enabled = False then


Добавлено через 13 минут и 4 секунды
Извините, разобрался. Я объявил переменную mot:TForm... Когда переделал на mot:TmotionInOut все заработало. Спасибо.
PM MAIL   Вверх
Akella
Дата 11.3.2013, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



учи азы smile
PM MAIL   Вверх
harakiri
Дата 11.3.2013, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 17.1.2011

Репутация: нет
Всего: нет



Ок! В любом случае, спасибо!

Добавлено через 5 минут и 42 секунды
Кстати, а не подскажешь ресурсы или литературу именно по азам ООП в делфи. 
PM MAIL   Вверх
Akella
Дата 11.3.2013, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



в разделе для новичков есть закреплённая тема
http://forum.vingrad.ru/forum/topic-179930.html
PM MAIL   Вверх
de_Nis
Дата 13.3.2013, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старательный
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 19.10.2006
Где: Молдова

Репутация: нет
Всего: 6



Цитата(harakiri @  11.3.2013,  12:03 Найти цитируемый пост)
Кстати, а не подскажешь ресурсы или литературу именно по азам ООП в делфи.  

Можно почитать 

Иванова Объектно-ориентированное программирование
Миронченко Императивное и ООП программирование на Turbo Pascal и Delphi
--------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет…
PM   Вверх
superVad
Дата 13.3.2013, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



harakiri, 
Так не надо:
Код

if motionInOut.chk2.Enabled = False then


Надо так:
Код

if not motionInOut.chk2.Enabled then


PM MAIL   Вверх
Akella
Дата 13.3.2013, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



почему?
PM MAIL   Вверх
Чучмек
Дата 13.3.2013, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Цитата(Akella @  13.3.2013,  17:44 Найти цитируемый пост)
почему? 

масло масляное.

Добавлено через 2 минуты и 31 секунду
Когда то я вообще писал
Код

if boolVar=true then...
 
вот то уж точно г...


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
superVad
Дата 13.3.2013, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



Цитата(Akella @  13.3.2013,  16:44 Найти цитируемый пост)
почему?

Помогает для себя уяснить как работают условия и как пользоваться типом Boolean. И если в слух читать, то понятнее.
Но я не настаиваю.

Добавлено через 38 секунд
Цитата(Чучмек @  13.3.2013,  17:25 Найти цитируемый пост)
Когда то я вообще писал

Все когда то так писали  smile 
PM MAIL   Вверх
Poseidon
Дата 13.3.2013, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Akella @  13.3.2013,  17:44 Найти цитируемый пост)
почему?

Цитата(К. Пачеко. Borland Delphi 6. Руководство разработчика.)
Изменения в булевых типах
Реализация булевых типов в Delphi 2 (Boolean, ByteBool, WordBool, LongBool) подразумевает, что значение True соответствует значению 1, а значение False — 0. Для обеспечения лучшей совместимости с интерфейсом API Win32 реализация Byte- Bool, WordBool и LongBool немного изменилась: значение True теперь представляется целым — -1 ($FF, $FFFF и $FFFFFFFF соответственно). Тип же Boolean остался прежним. Эти изменения могут сказаться на поведении программ, но только если в них используются числовые представления значений таких типов. Взгляните на следующее объявление:
Код

var  A: array[LongBool] of Integer;

В Delphi 2 данный код вполне безобиден — он объявляет массив целых array[False..True] или [0..1] с двумя элементами. Но в Delphi 3 это объявление может привести к некоторым весьма неожиданным результатам: поскольку True определено для LongBool как $FFFFFFFF, то подобное объявление приводит к созданию массива целых чисел array[0..$FFFFFFFF] или массива из четырех миллиардов (!) целых типа Integer. Во избежание этой проблемы в качестве индекса массива используйте тип Boolean. Как ни странно, но необходимость в таком изменении возникла в связи с тем, что получившие широкое распространение элементы управления ActiveX и контейнеры элементов управления (как у Visual Basic) проверяют значение булевых переменных, сравнивая их с -1, а не с нулем или значением, отличным от нуля.

СОВЕТ
Во избежание ошибок и проблем совместимости никогда не пишите код подобный этому: 
Код

if BoolVar = True then ...
 Вместо этого всегда проверяйте логические типы следующим образом: 
Код

if BoolVar then ...



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
northener
Дата 14.3.2013, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Akella @  13.3.2013,  17:44 Найти цитируемый пост)
почему? 

Потому что компиляторы языка Паскаль в такой конструкции не нуждаются.
+ Все предыдущие ответы. 


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Akella
Дата 14.3.2013, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(Чучмек @  13.3.2013,  18:25 Найти цитируемый пост)
Цитата(Akella @  13.3.2013,  17:44 Найти цитируемый пост)
почему? 

масло масляное.


И поэтому ты так категорично заявляешь - НЕЛЬЗЯ?!
PM MAIL   Вверх
Чучмек
Дата 14.3.2013, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Цитата(Akella @  14.3.2013,  11:35 Найти цитируемый пост)
И поэтому ты так категорично заявляешь - НЕЛЬЗЯ?! 

Я не категоричен. Главное что работает.
Код

if BoolVar = false then ...

Код

if not BoolVar then ...

Оба варианта компилируются одинаково.
Но не вижу смысла в сравнении логической величины с константой,  с целью получить логическую величину.
Вариант со сравнением требует дополнительных скобок в сложном условии.
Больше трех вложенных скобок,для меня лично, требуют значительного  повышения внимательности.
Чаще требуется обратное
Код

BoolVar = v1 = v2
if  ... BoolVar ... then


 


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.