| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Почему работает неправильно? |
| Автор: aktuba 10.1.2007, 16:06 | ||
На форме две кнопки и такой код:
Объясните plz, поподробнее, почему после выполнения кода Button1 = Button3... |
| Автор: Rennigth 10.1.2007, 16:11 | ||
и... |
| Автор: Sunvas 10.1.2007, 16:12 |
Что-то я не вижу у тебя тут button3.. |
| Автор: sergejzr 10.1.2007, 16:22 |
| Модератор: Название темы должно отражать ее суть! |
| Автор: Rennigth 10.1.2007, 16:31 |
Я вот просто не вижу где он и какие указели присваивает? |
| Автор: Rodman 10.1.2007, 16:36 |
потому что ты так присвоил |
| Автор: VICTAR 10.1.2007, 16:44 | ||
Наверное должно быть так?
|
| Автор: aktuba 10.1.2007, 16:45 | ||
ИЗВЕНИТЕ, ошибка вышла. Исходный код такой:
Но, вопрос прежний!!! |
| Автор: VICTAR 10.1.2007, 16:48 |
| тогда все понятно! после выполнения Button1.Name := 'Button3' с этой кнопкой больше ничего не происходит, т.к. по коду больше нет обращения к Button3!!! Все остальные дествия происходят с Button2, которая по ходу меняет свое имя... |
| Автор: Alexeis 10.1.2007, 16:53 |
Так вопрос толком и не прозвучал в чем смысл дважды присваивать значение полю name одного и того же объекта Button1? |
| Автор: aktuba 10.1.2007, 17:14 | ||
Вопрос: почему после завершения кода Button1.Name = 'Button3', если в конце кода происходит Button1.Name = 'Button2'; А зачем смысл? Меня интересует, почему происходит так... |
| Автор: Rennigth 10.1.2007, 17:14 |
Добавлю к объяснениям VICTAR и повторюсь. Отключи оптимизатор Delphi (Project Options->Compiler->Code Generation-> Optimization), и посмотри что будет. Дельфи умная иногда бывает и лишний код она игнорирует. |
| Автор: aktuba 10.1.2007, 18:01 | ||||
Оптимизатор включен. Да и где тут лишний код? Все задействовано ведь... Попробуйте у себя: форма, две кнопки, на первой такой обработчик... |
| Автор: VICTAR 10.1.2007, 18:09 |
| aktuba, пойми, после Button1.Name := 'Button3' эта кнопка уже не является Button1, она Button3. Button3 ты нигде не трогаешь! Остальные действия у тебя происходят только с Button2(изначально), которая сначала становиться Button1, затем опять Button2, и в конце концов благополучно умирает... |
| Автор: aktuba 10.1.2007, 18:14 | ||||||
VICTAR,
Как так? в таком случае, после
Button2 должна указывать на Button3, а после
должно все удаляться??? тоже не верно. |
| Автор: VICTAR 10.1.2007, 18:32 | ||
| ок, давай так: Изначально Button1=кнопка №1 Изначально Button2=кнопка №2 теперь:
уф-ф. Надеюсь понятно |
| Автор: Beltar 10.1.2007, 18:52 |
| Попробуй создать на форме кнопки и присвоить одной из них имя уже существующей. Нифига не выйдет. Name это уникальное свойство, оно вроде как идентифицирует объект. Зачем тебе все это понадобилось? А что чем является лучше посмотри под отладчиком, для этого получи адреса кнопок. Оптимизатор действительно лучше отключить. |
| Автор: Sunvas 10.1.2007, 18:55 | ||||||
| Ща попробую объяснить, только не знаю подберу ли нужные слова, чтобы меня поняли. Вся эта катавасия происходит потому что есть описание объекта и имя объекта. Это по-сути две разные вещи, но Делфи в Desing time это объеденил в одно понятие, чтобы нам было легче. Поэтому и возникает путаница. Присвоение имени объекту в run time имхо сделано только когда мы и сам объект создаем в run time Приведу простой пример, где покажу, что имя объекту можно и не присваивать (оно будет пустым):
Теперь, если мы захотим обратиться к пятой кнопке, мы напишим:
Из этого вывод, что объект может имени вообще не иметь:
, а описание может не соответствовать имени. Поэтому при обращении к объекту через его описание в проблеме автора Делфи ищет объект с таким же именем функцией findcomponent , и если не находит, то ничего не делает. |
| Автор: Magister Y0da 11.1.2007, 13:52 | ||
попробуй сделать вот так
|
| Автор: VICTAR 11.1.2007, 14:00 | ||
Не откомпилируется, т.к. изначально на форме нет Button3. Решить просто, только надо понять что требуется автору |
| Автор: Magister Y0da 11.1.2007, 14:21 |
| ну... эээ..... у нас ведь имя меняется с Button1 а Button3, а потом обратно вроде так |
| Автор: aktuba 11.1.2007, 14:22 |
| Magister Y0da, в исходном вопросе было указано, что на форме ДВЕ кнопки ( Button1 и Button2)... |
| Автор: Magister Y0da 11.1.2007, 15:02 | ||||
тогда не понимаю что ему от нас надо
блин теперь увидел Sorry |