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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.014 c
15-1142584014
Alex_Delphi
2006-03-17 11:26
2006.04.09
Посоветуйте какой генератор отчотов наиболее лучий для работы


2-1141851911
spogi
2006-03-09 00:05
2006.04.09
Kak uznat kakoy den nedeli, esli znayu kakaya data?


15-1142962553
Dust
2006-03-21 20:35
2006.04.09
Диалог выбора паки


1-1141328534
Serafim-ss
2006-03-02 22:42
2006.04.09
Marquee progress bar как в эсплорере


2-1143398127
Kolan
2006-03-26 22:35
2006.04.09
Как пользоваться интерфейсом?





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