| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как узнать поля класса? |
| Автор: Гость_Victor 29.12.2004, 13:51 |
| Вопрос к знающим: каким образом можно узнать поля класса? Или по-другому: нужно получить доступ к полю одного класса из другого, учитывя что его может не быть. Или по простому: есть MDI приложение и много форм; из одной формы нужно определить есть ли переменная в другой (секция public) и изменить если она присутствует. |
| Автор: Vex 29.12.2004, 14:19 |
| А ты в любом случае вставляй в класс переменную, если нет значения, то просто пиши например "0". |
| Автор: Гость_Victor 29.12.2004, 14:35 |
| Vex больно накладно получается.. если у меня соотношение есть-нет скажем 2:10 |
| Автор: Гость_Victor 30.12.2004, 10:57 |
| Как выяснилось подобное в delphi невозможно... т.е. можно получить информацию о полях класса (RTTI) если из секции published, но там ограничения на типы полей - не иначе как интерфейс или класс. Но, в обход придумал сделать так: получить адрес метода, передать параметры и выполнить его можно даже если заведомо не знаешь что он существует. единственное неудобство - добавлять этот метод там где есть переменная.... если кто-нибудь придумает решение получше - сообщите пожалуйста мне на [email protected] |
| Автор: <Spawn> 30.12.2004, 11:39 | ||
А может так:
|
| Автор: Гость_Victor 30.12.2004, 13:04 |
| может я что-то упустил, но не совсем понял как это можно применить? к тому же в твоем случае sm.. всегда будет показывать ноль |
| Автор: <Spawn> 30.12.2004, 16:08 | ||
|
| Автор: Vit 30.12.2004, 17:53 | ||
| Public сложно, но если объявить как Published то есть такая штука как RTTI (в DRKB много примеров), которая позволяет обращаться по имени к Published свойствам и проверять их наличие... Второй способ: наследовать все MDI формы от некого предка со свеми нужными свойствами, тогда обращение к ним будет простым и прозрачным Добавлено @ 17:57
Не правда ваша, типы полей могут быть любыми, RTTI легко позволяет достучаться к Integer или String или к чему угодно... |