![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| December |
|
||||||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Greetings All!
У меня есть процедура, которая описана так:
Но при попытке скормить ей Form.Top
Компилятор говорит:
Хотя обычные интеджеровские переменные она обрабатывает нормально. Как обойти эту траблу? |
||||||
|
|||||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Или так:
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
alex-co
Так изврануться - не проблема, хоцца однообразия в процедурах, так, как написал Girder, за что ему большое спасибо. |
|||
|
||||
| Calypso |
|
||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 30.6.2004 Репутация: нет Всего: нет |
Удалено модератором!
А ничего подобного - Girder не ответил на вопрос.
не канает т.к. нада чтобы было
Пацаны, дак ведь все эти топы и лефты это не переменные (хотя у них даже тип есть) это - своиства, хранящие данные в полях типа Ftop, Fleft о осуществляющие доступ через методы Я сделал так:
или так
Кстати а кто объяснит зачем нужен этот overload; УДАЧИ Это сообщение отредактировал(а) Pegas - 1.7.2004, 07:47 |
||||||||
|
|||||||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
А ты знаеш разницу
-------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
| Петрович |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Когда увидел код Girderа, был удивлен, и считал что это даже не должно скомпилиться. Поясню почему: Дело в том, что Top это свойство а не переменная и не поле. Т.е. сущность которая вообще-то не имеет адреса. Поэтому, применение к ней оператора @ по моему невозможно.
Кстати, именно по этой причине нельзя передавать свойство как var параметр. Однако, решил проверить. Был крайне удивлен, когда выяснилось что мнение компилятора отличается от моего
Если их убрать, то код перестает работать. Решил разобраться. Свойство Top у tControl который является предком tForm описано так:
При выполнении
Наличие в примере
Резюме. Несмотря на то, что компилятор допускает получение адреса свойства, использовать это НЕДОПУСТИМО! Вообще, считаю что это ошибка в компиляторе. Это сообщение отредактировал(а) Петрович - 1.7.2004, 08:54 -------------------- Все знать невозможно, но хочется |
||||||||
|
|||||||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
А вообще прикольно менять некоторые значения, которые поменять(легко) не удается Это сообщение отредактировал(а) Girder - 1.7.2004, 10:17 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
| Calypso |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 30.6.2004 Репутация: нет Всего: нет |
Girder
Хоть и выглядит это как косяк но компилятор генерирует один и тот же вызов процедуры |
|||
|
||||
| <Spawn> |
|
||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Это указывает компилятору на то, что существует еще одна функция(метод) с таким же именем - различие в них в разном наборе параметров. Без данной директивы компилиться ни чего не будет(при наличии двух одиноковых в названии функций(методов одного класса)). Например:
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||
|
|||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
В первом случаи: Передача типизированного параметра по ссылке(читай передача указателя) Во втором случаи: Передача типизированного указателя(читай передача указателя). В первом случаи для доступа к данным нам ни чего делать не надо(все сделает компилятор), во втором случаи для доступа к данным нам надо применить операцию его(указателя) разыменования. P.S. А еще бывают нетипизированные параметры и указатели Удачи. -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| December |
|
||||||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Ни фига себе тред развился!
Петрович
Предложи допустимый вариант решения проблемы. И на всякий случай: проблема не в том, чтобы изменить значение Form.Top, а чтобы с помощью процедуры загружать разные значения в разные свойства формы, то есть примеры типа
и
не канают. Всем спасибо за интерес, проявленый к теме. |
||||||
|
|||||||
| Петрович |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Как я уже писал выше, передать свойство как var параметр НЕВОЗМОЖНО. Следовательно, так как ты хочешь, сделать нельзя. Можно сделать вариант для published свойств, используя RTTI. Будет выглядеть что-то вроде такого:
Реализацию LoadVar оставляю другим, самому лень -------------------- Все знать невозможно, но хочется |
||||
|
|||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Гм... Мне пока что существующий вариант больше нравится
|
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
А "существующий" это какой? -------------------- Все знать невозможно, но хочется |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |