Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.09;
Скачать: CL | DM;

Вниз

Перебрать в цикле свойства класса   Найти похожие ветки 

 
Spellcaster   (2006-03-24 18:10) [0]

Всем привет! Есть у меня задачка: чтение данных из байтового потока и преобразование всего этого в класс. У каждого класса немало членов-свойств разных числовых типов (целые, дробные, ...). Сейчас я каждое свойство читаю присваиваю отдельно, отчего получаются длинные и некрасивые "портянки" типа
cl.Int1:=getbytes(4);
cl.Float1:=getbytes(4);
cl.byte1:=getbytes(1);
...

Нельзя ли сделать переборку свойств в цикле?
Чтобы можно было так:
for i:=0 to propcount-1 do
prop[i]:=getbytes(sizeof(prop[i]));

я поискал в мануалах, но там есть только для published свойств. Мне же они не нужны, мне достаточно простых public. Есть ли средство получить список публичных свойств, или это возможно лишь для published?


 
Джо ©   (2006-03-24 18:17) [1]

> Мне же они не нужны, мне достаточно простых public.

А что мешает сделать их published?


 
Ega23 ©   (2006-03-24 18:20) [2]


> Есть ли средство получить список публичных свойств, или
> это возможно лишь для published?


Либо объявив их как published, либо написать свой вариант реализации RTTI, где можно будет любые методы-свойства перебирать.
Первое, несомненно, проще...   :о)


 
SpellCaster   (2006-03-27 14:06) [3]

Да, но если делать паблишед, то вместо одного объявления свойства

public
stuff: string;

придется делать так:

private
F_stuff: string;
published
property stuff: string read F_stuff write F_stuff;

А если свойств 15-20?


 
MBo ©   (2006-03-27 14:10) [4]

Не подойдет ли тебе DefineProperties ?


 
Ega23 ©   (2006-03-27 14:16) [5]

Ctrl+Shift+C тебе поможет


 
SpellCaster   (2006-03-27 14:22) [6]

Гм... там что-то уж очень замороченное. TFiler какой-то... к тому же у меня наследники от Tobject, а этот метод только в TPersistent. Ну да ладно, писать данные скопом я навострился - просто запихнул все свойства в запись и пишу sizeof байт по адресу первого компонента. А вывод на печать содержимого класса у меня только для отладки.


 
MBo ©   (2006-03-27 14:29) [7]

>TFiler какой-то... к тому же у меня наследники от Tobject, а этот метод только в TPersistent

Зато есть готовый механизм потокового сохранения, который сама Delphi использует.


 
Сергей М. ©   (2006-03-27 14:56) [8]


> к тому же у меня наследники от Tobject


Всего делов-то - исправить class(TObject) на class(TPersistent) .. И получить готовый велосипед)


 
SpellCaster   (2006-03-27 17:40) [9]


> исправить class(TObject) на class(TPersistent)


И как это я сам не додумался ;)



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

Текущий архив: 2006.04.09;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.013 c
2-1143275526
Alex7
2006-03-25 11:32
2006.04.09
????????????


15-1142499390
Alex_Delphi
2006-03-16 11:56
2006.04.09
Подскжите где можна достать Кілікс


2-1143221977
Alex7
2006-03-24 20:39
2006.04.09
?????


2-1142997974
soi
2006-03-22 06:26
2006.04.09
Программное изменение размера дочернего окна


11-1124279919
Gothic two
2005-08-17 15:58
2006.04.09
Проблема с MCK





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский