Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];
ВнизСохранение 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 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c