Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранение published-свойств в поток [D6, Win2k]


cult ©   (2002-10-25 15:30:00) 

Господа, вот такой вопрос:

есть ли в Дельфи штатная возможность НЕ сохранять одно или несколько Published-свойств в поток?
т.е. я хочу сохранять туда не полный их список, а за некоторым исключением.

Спасибо.


cult   (2002-10-25 16:25:00) [1]

reonid , Юрий Зотов:

похоже, это именно то, что я искал. Если stored действительно может быть не константой, а процедурой, то проблема решена. Буду пробовать, спасибо.

skier:

без Вас диалог бы не состоялся :) Спасибо.


Юрий Зотов   (2002-10-25 16:17:00) [2]

Класс-предок:
published
property SomeProp.... // что угодно, это неважно
...

Ваш класс-потомок:
private
function IsSomePropStored: boolean;
...
published
property SomeProp stored IsSomePropStored;
...

function ...IsSomePropStored: boolean;
begin
Result := csDesigning in ComponentState // и что угодно еще
end;

После этого в run-time можно использовать стандартное сохранение компонента в поток и свойство сохраняться не будет. В design-time все останется по-прежнему.


reonid   (2002-10-25 16:16:00) [3]

Насколько я помню, в директиве stored можно указать функцию - соответственно, с её помощью можно управлять сохранением "на ходу".

Можно также написать вручную сохранение всех св-в -
но это геморройно, там слишком много всяких частных случаев.
(Хотя тоже ничего сверъестественного)


cult   (2002-10-25 16:07:00) [4]

это все не совсем то, что надо...
Есть класс, в котором некоторые свойства объявлены Published именно и только для того, чтобы автоматически писаться в поток.

Однао обнаружилось, что в ряде случаев некоторые из этих Published-свойств не потребуются при последующем чтении, и писать их в поток не нужно. В-принципе, каждое свойство может оказаться таким "ненужным". Получается, что мне нужно делать Stored False для всех published-свойств, а потом, при записи, указывать, какие из них писать, а какие нет? Тогда пропадают все преимущества публикуемых свойств. Вот я и спрашиваю - а можно ли "на ходу" отменять эту "записываемость" для свойства?

Я еще не надоел? Тогда жду ответа :)
Спасибо.


Skier   (2002-10-25 16:00:00) [5]

>cult
И поставь у нужного св-ва Stored False


Skier   (2002-10-25 15:58:00) [6]

>cult
Можно.
Объяви свой потомок...


cult   (2002-10-25 15:55:00) [7]

т.е., если свойство объявлено со Stored True, то отменить его сохранение уже нельзя? :(


Skier   (2002-10-25 15:48:00) [8]

>cult

> вы мне предлагаете все Published - свойства объявить изначально
> со Stored:=false


1) Не все, а только те, которые не нужно писать в поток
2) Не Stored:=false, а просто Stored False
(см. Skier © (25.10.02 15:32) и Игорь Шевченко ©
(25.10.02 15:39))


cult   (2002-10-25 15:45:00) [9]

я, честно говоря, только начинаю заниматься проработкой вопроса.

т.е. вы мне предлагаете все Published - свойства объявить изначально со Stored:=false и потом в явном виде заставлять их записываться в поток?


Skier   (2002-10-25 15:39:00) [10]

>cult
А ты их пишешь разве не через TWriter ?!


Игорь Шевченко   (2002-10-25 15:39:00) [11]

Stored False;


cult   (2002-10-25 15:35:00) [12]

так это Design-Time!
а мне надо писать компонент в поток во время выполнения, и при этом не писать туда некоторые из published-свойств, вот как стоит вопрос


Skier   (2002-10-25 15:32:00) [13]

>cult
есть
например написать :
YourProperty : TYourType read...write...stored False


Наверх

Титульная страница Поиск, карта сайта Написать письмо