Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Вниз

Как обратиться к свойству, зная его название?   Найти похожие ветки 

 
Пубертанец   (2003-07-01 09:19) [0]

Т.е. что-то типа GetPropValue(Obj, "Number").

Пытался подключить TypInfo.pas и взял оттуда функцию GetPropValue
(GetPropValue(self, "Number")), но вырубается с исключением, что не найдено свойство Number, хотя такое свойство у меня в классе есть.


 
MBo   (2003-07-01 09:33) [1]

А оно у тебя published?

вот это работает:

Caption:=GetPropValue(Self,"Width");


 
Пубертанец   (2003-07-01 09:37) [2]

Нет, оно не published. А как тогда мне обратиться к нему, если оно не published? (на всякий случай, тип Number - string)


 
MBo   (2003-07-01 09:42) [3]

RTTI-информация генерируется только для published.
А что за задача?
Нужно ли применение RTTI?


 
Пубертанец   (2003-07-01 09:53) [4]

Задача такая: нужно получить значения всех свойств класса и потом манипулировать ими (например, вывести в Listbox)


 
MBo   (2003-07-01 10:05) [5]

Эта задача решаема для published.


 
Пубертанец   (2003-07-01 10:19) [6]

Хотя бы так. Но почему-то этот код вываливается с ошибкой "property Number not found".

TReestr = class
private
FNumber: string;
published
property Number: string read FNumber write FNumber;
end;


Caption:=GetPropValue(self, "Number");


 
Poirot   (2003-07-01 10:23) [7]

self, форма в вашем случае или то где вы её (функ) юзаете...
вам надо обж типа TReestr вместо self указать!


 
Пубертанец   (2003-07-01 10:28) [8]

Нет, у меня класс расположен в отдельном модуле, и даже подсказка говорит, что Self - это TReestr


 
Zacho   (2003-07-01 10:34) [9]


> Пубертанец (01.07.03 10:28)

Т.е. строка Caption:=GetPropValue(self, "Number");
находится в каком-либо методе класса TReestr ? Точно ?


 
NDeu   (2003-07-01 10:39) [10]


> Пубертанец (01.07.03 10:28)
> Нет, у меня класс расположен в отдельном модуле, и даже
> подсказка говорит, что Self - это TReestr

Тогда

> Caption:=GetPropValue(self, "Number");

Caption чей?


 
Пубертанец   (2003-07-01 10:41) [11]

Yes


 
Poirot   (2003-07-01 10:44) [12]

Давай код! Тут явно что-то не чисто!!!
Если ты говоришь, что self is TReestr, to где у него свойство Caption?


 
Poirot   (2003-07-01 10:45) [13]


> Пубертанец (01.07.03 10:41)
> Yes

что yes?


 
Пубертанец   (2003-07-01 10:48) [14]

Ой, yes - это NDeu. А код такой:

TReestr = class
private
FNumber: string;
public
constructor Create;
published
property Number: string read FNumber write FNumber;
end;

constructor TReestr.Create;
var Caption: string;
begin
inherited Create;
Number:="343";
Caption:=GetPropValue(Self, "Number");
showmessage(Caption);
end;


 
Poirot   (2003-07-01 11:08) [15]

что-то мне кажктся, что для наследника TObject не пашет эта фигня!!!


 
Пубертанец   (2003-07-01 11:23) [16]

*Б ТВОЮ МАТЬ!!!
Это только для TComponent!!!
Ох, ё-мое. Ну, спасибо. Буду наследовать от него.
Кстати, а как получить список свойств?


 
Poirot   (2003-07-01 11:26) [17]


> *Б ТВОЮ МАТЬ!!!

надеюсь это не мне %)

Исследуй модуль TypInfo.pas!


 
Zacho   (2003-07-01 11:37) [18]


> Пубертанец (01.07.03 11:23)

Насколько я понимаю, для TPersistent


 
icWasya   (2003-07-01 13:15) [19]

во нашел!!!
{$TYPEINFO ON}// или {$M+}
type TReestr = class
private
FNumber: string;
public
constructor Create;
published
property Number: string read FNumber write FNumber;
end;
{$TYPEINFO OFF}// или {$M-} см $M+F1

constructor TReestr.Create;
var Caption: string;
begin
inherited Create;
Number:="343";
Caption:=GetPropValue(Self, "Number");
showmessage(Caption);
end;


и всё заработает



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
14-44850
Juster~
2003-06-24 12:00
2003.07.14
USA - что там за горизонтом?


1-44692
XobBIT
2003-06-30 17:19
2003.07.14
Как из библиотеки узнать путь до библиотеки?


14-44870
Bill
2003-06-27 12:27
2003.07.14
Преобразование строки в математическое выражение


1-44703
Demetrius2003
2003-07-01 01:06
2003.07.14
Invalid Floating operation ???


1-44712
Hooch
2003-06-30 12:50
2003.07.14
Размер окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский