Текущий архив: 2007.08.05;
Скачать: CL | DM;
Вниз
String -> TControl Найти похожие ветки
← →
Kolan © (2007-07-04 09:50) [40]> а вы о чем собственно?
Думаю о сериализации:
http://rsdn.ru/article/delphi/serialization.xml
← →
Юрий Зотов © (2007-07-04 10:52) [41]> VirEx © (03.07.07 18:34) [37]
> цель была: загрузить из ini файла объект, с определенными свойствами,
> любой объект
А в чем, собственно, проблема-то? Есть готовый механизм, если он почему-то не устраивает (кстати, непонятно, почему?), то делайте свой по аналогии.
Например, пусть в INI-файле имеем секцию (которая, кстати, ничем по сути не отличается от соответствующей "секции" текстового DFM):
[Button1 = TButton]
Left = 50
Top = 40
Width = 100
Height = 25
Parent = Panel1
Caption = "OK"
Читаем заголовок этой секции и создаем объект (естественно, его класс должен быть зарегистрирован). Потом читаем тело секции и назначаем его свойства (через функции из TypInfo.pas).
Но еще раз - а чем, собственно, не устраивает готовый механизм? Действительно ведь изобретение велосипеда получается.
← →
Kolan © (2007-07-04 10:54) [42]> если он почему-то не устраивает (кстати, непонятно, почему?
> ), то делайте свой по аналогии.
Может если надо именно ini, то проще пользоваться стандартным а на выходе/входе преобразовываеть его в ini и обратно?
← →
VirEx © (2007-07-04 16:51) [43]
> [41] Юрий Зотов © (04.07.07 10:52)
ну так покажите готовый велосипед то.
> [39] Игорь Шевченко © (04.07.07 09:45)
...или с круглыми колёсами
> [40] Kolan © (04.07.07 09:50)
> > а вы о чем собственно?
>
> Думаю о сериализации:
> http://rsdn.ru/article/delphi/serialization.xml
см.:
> [37] VirEx © (03.07.07 18:34)
> [38] VirEx © (03.07.07 19:42)
← →
Юрий Зотов © (2007-07-04 19:56) [44]> VirEx © (04.07.07 16:51) [43]
> ну так покажите готовый велосипед то.
Read/WriteComponent.
То есть, вместо самопальной сериализации в INI-файлы (для создания которой придется еще помучиться) работаете со штатной сериализацией в текстовые (или двоичные - как угодно) файлы формата DFM.
И никаких проблем. И с круглыми колесами.
PS
Еще можно посмотреть ObjectBinaryToText/ObjectTextToBinary. Тоже с круглыми колесами.
← →
VirEx © (2007-07-05 20:00) [45]я так понимаю на мастаках все читаю посты автора выборочно :(
← →
Loginov Dmitry © (2007-07-05 21:38) [46]> ...или с круглыми колёсами
С квадратными один фиг. Попробуй без Write/ReadComponent считать из своего ini-файла текст для TMemo. Как в этом случае извратишься? Мне вот в LangReader"e пришлось с этим немало помучаться.
← →
VirEx © (2007-07-06 17:01) [47]
> [46] Loginov Dmitry © (05.07.07 21:38)
> > ...или с круглыми колёсами
>
>
> С квадратными один фиг. Попробуй без Write/ReadComponent
> считать из своего ini-файла текст для TMemo. Как в этом
> случае извратишься? Мне вот в LangReader"e пришлось с этим
> немало помучаться.
легко, в ини файле не было примера многострочного свойства, но в коде:
> [27] VirEx © (02.07.07 22:37)
показано как загрузить TStrings
tkClass: begin
tmpObj:=TPersistent(GetOrdProp(Obj, propNames[i]));
if tmpObj is TFont then StrToFont(TFont(tmpObj),Value)
else
if tmpObj is TStrings then begin
TStrings(tmpObj).Clear;
Value:=ReplaceSub(Value,"|",#13#10);
TStrings(tmpObj).Text:=Value;
end;
end;
тоесть замена перевода каретки на символ | как при чтении ини файла так и при сохранении
← →
Юрий Зотов © (2007-07-06 17:34) [48]> VirEx © (06.07.07 17:01) [47]
1. Текст в Мемо содержит символ |.
2. Самописный TmpObj (класса, который программа читать/писать не умеет).
И приехали. На тех самых квадратных колесах.
← →
VirEx © (2007-07-06 19:21) [49]1. значит или ограничение, или что-то типа хтмл тега
2. я не собирался делать универсальный метод чтения компонентов
← →
oldman © (2007-07-06 19:23) [50]
> VirEx © (02.07.07 17:35)
> как реализовать такую штуку:
>
> var
> str:String;
> begin
> str:="TPanel";
> AddControl(Form1,str);
> end;
НА ХРЕНА???
← →
Юрий Зотов © (2007-07-07 12:29) [51]> VirEx © (06.07.07 19:21) [49]
1. В то время, как стандартный механизм ограничений не имеет и тэгов не требует.
2. В то время, как стандартный механизм именно универсальный.
Таким образом, велосипед Вы построили, но колеса у него действительно квадратные. О чем сразу и говорилось.
И возникает естественный вопрос - а зачем? кому он такой нужен, если есть нормальный, с круглыми?
← →
VirEx © (2007-07-07 12:33) [52]
> [51] Юрий Зотов © (07.07.07 12:29)
блин. спор ниочем)
я ж говорю - нужно в ini а не в виде frm или ресурсов (ф-и: ReadComponentResFile/WriteComponentResFile )
← →
Юрий Зотов © (2007-07-07 13:03) [53]> VirEx © (07.07.07 12:33) [52]
Спора никакого и нет. Не о чем тут спорить, все и так очевидно.
Что нужно в ini - это понятно. Непонятно другое - почему именно в ini? Это же заведомо проигрышное решение.
← →
atruhin © (2007-07-07 13:50) [54]Да и даже если в ini, скачай и посмотри библиотеку EhLib, там это реализованно
сохранение свойств компонентов, именно в ini, только прямо и без всяких ограничений.
← →
VirEx © (2007-07-07 15:45) [55]
> [54] atruhin © (07.07.07 13:50)
> Да и даже если в ini, скачай и посмотри библиотеку EhLib,
> там это реализованно
> сохранение свойств компонентов, именно в ini, только прямо
> и без всяких ограничений.
ну и?
этот компонент получает инфу через ObjectBinaryToText
и сохраняет её в виде:
[TForm1]
Line0="object Form1: TForm1"
Line1="end"
притом использует IniFiles
костыли поверх одной функции)
← →
Юрий Зотов © (2007-07-07 15:54) [56]Видимо, на вопрос "почему именно INI" ответа разумного нет?
Страницы: 1 2 вся ветка
Текущий архив: 2007.08.05;
Скачать: CL | DM;
Память: 0.58 MB
Время: 0.023 c