Вниз
Скачать: CL | DM;

Сохранение published-свойств в поток   Найти похожие ветки 

← →
cult ©   (2002-10-25 15:30) [0]

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

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

Спасибо.


← →
Skier ©   (2002-10-25 15:32) [1]

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


← →
cult ©   (2002-10-25 15:35) [2]

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


← →
Skier ©   (2002-10-25 15:39) [3]

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


← →
Игорь Шевченко ©   (2002-10-25 15:39) [4]

Stored False;


← →
cult ©   (2002-10-25 15:45) [5]

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

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


← →
Skier ©   (2002-10-25 15:48) [6]

>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:55) [7]

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


← →
Skier ©   (2002-10-25 15:58) [8]

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


← →
Skier ©   (2002-10-25 16:00) [9]

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


← →
cult ©   (2002-10-25 16:07) [10]

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

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

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


← →
reonid ©   (2002-10-25 16:16) [11]

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

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


← →
Юрий Зотов ©   (2002-10-25 16:17) [12]

Класс-предок:
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 все останется по-прежнему.


← →
cult ©   (2002-10-25 16:25) [13]

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

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

skier:

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



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.013 c
1-11267
Stocker!
2002-10-22 12:24
2002.11.04
Цветная кнопка TSpeedButton и иже с ними


3-11075
alexvan
2002-10-15 11:28
2002.11.04
как вставить картинку в таблицу


14-11486
Николай Быков
2002-10-09 15:26
2002.11.04
Неужели Виктор Цой забыт в наше время Децлов и Бритни Спирс?


6-11369
tararasyk
2002-09-05 13:26
2002.11.04
Уничтожить ClientSocket, конструктор Create(), метод Free()


6-11365
Крот
2002-09-04 23:14
2002.11.04
Передача данных через сокеты




   Наверх