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

Вниз

Пустая строка в файле ресурсов   Найти похожие ветки 

 
_REA   (2009-08-27 13:56) [0]

День добрый.
Пытаюсь сохранить String Published Property копонента в файл через сериализацию. Если строка пустая, то она не сохраняется.
Nodefault и Stored True что-то не помогают. Где может быть проблема?


 
_REA   (2009-08-27 14:04) [1]

Выкрутился так:
В конструкторе
If Not (csLoading in aOwner.ComponentState) Then
 MyNoDefaultString := MyDefValue;


 
Сергей М. ©   (2009-08-27 14:17) [2]

private
 function NeedStoreMyProp: Boolean;
..
published
 property MyProp: String read GetMyProp write SetMyProp stored NeedStoreMyProp;

..
function NeedStoreMyProp: Boolean;
begin
 Result := GetMyProp <> "";
end;


 
_REA   (2009-08-27 16:56) [3]

2Сергей М.
Обязательно функцию объявлять для Stored?
См. вопрос - мне надо наоборот - сохранить пустую строку (т.к. по умолчанию она как раз не пустая у меня).
А по вашему коду похоже, что пустые строки не надо сохранять, но они и так не сохраняются.


 
_REA   (2009-08-27 16:57) [4]

Если еще точнее, то мне надо сохранять все - и пустые и не пустые строки.


 
Сергей М. ©   (2009-08-27 17:06) [5]


> Обязательно функцию объявлять для Stored?


Не обязательно.
Можно указать булево поле класса.


> мне надо сохранять все - и пустые и не пустые строки


А можно полюбопытствовать, зачем нужно сохранять пустую строку ?


 
_REA   (2009-08-28 11:28) [6]

>Можно указать булево поле класса.
См. выше - для строк не прокатывает почему то.

> А можно полюбопытствовать, зачем нужно сохранять пустую
Смысл такой: в конструкторе присваивается некая строка по умолчанию, которую пользователь может изменить в том числе и на пустую. Если пустая не сохраняется, то при загрузке остается значение присвоенное в конструкторе, а это не есть гуд. Можно конечно присваивать не в конструкторе, но мне удобнее там по соображениям построения класса.


 
Сергей М. ©   (2009-08-28 12:21) [7]


> Можно конечно присваивать не в конструкторе, но мне удобнее
> там по соображениям построения класса


Непонятное "удобство" ..

Пояснишь фрагментами кода ?


 
_REA   (2009-08-28 17:05) [8]

Код большой, размазан по иерархии классов, разным packages и т.п.
В данном случае начальное значение этой строки определяется самим классом.

Ну как пример: Есть класс TОвощ и унаследован от него TОгурец. Свойство Название будет по умолчанию = Огурец. Но, пользователь может написать ОгЗеленый, или вообще ничего не писать - тогда это будет огурец без названия.


 
Сергей М. ©   (2009-08-28 17:30) [9]

А это принципиально, чтобы св-во было именно published ?
И по-прежнему не понятно, чем так уж удобно называть его "Огурцом" именно в конструкторе, если с тем же успехом его можно обозвать, к примеру, в перекрытом методе Loaded() ..


 
_REA   (2009-09-02 11:52) [10]

>А это принципиально, чтобы св-во было именно published ?
Да. Нужно сохранять название.

>И по-прежнему не понятно, чем так уж удобно называть его "Огурцом" именно в конструкторе, если с тем же успехом его можно обозвать, к примеру, в перекрытом методе Loaded()

Loaded вызывается при загрузке, а до загрузки еще надо создать экземпляр. Он  в принципе может быть вообще не сохранен на диск. А может быть и сохранен.


 
Сергей М. ©   (2009-09-02 12:03) [11]


> Нужно сохранять название


published для этого, конечно, удобен, но вовсе не обязателен.
См. TPersistent.DefineProperties, TFiler.DefineProperty


> Loaded вызывается при загрузке, а до загрузки еще надо создать
> экземпляр


На момент вызова Loaded экземпляр уже создан.

Читай внимательно (цитата из справки):

When the streaming system loads a form or data module from its form file, it first constructs the form component by calling its constructor, then reads its property values from the form file. After reading all the property values for all the components, the streaming system calls the Loaded methods of each component in the order the components were created. This gives the components a chance to initialize any data that depends on the values of other components or other parts of itself.



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

Форум: "Основная";
Текущий архив: 2011.04.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.004 c
15-1292773811
Kto_tyT_a
2010-12-19 18:50
2011.04.10
Нужен компонент, аналог TChart


6-1233550485
vann
2009-02-02 07:54
2011.04.10
Как задать таймаут при определении имени хоста?


2-1294871283
Ghost del vonte
2011-01-13 01:28
2011.04.10
Проблема при удалении последней вкладки на TabSet


2-1294923778
student22
2011-01-13 16:02
2011.04.10
HTML


15-1293026590
картман
2010-12-22 17:03
2011.04.10
db comparer





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