Форум: "Начинающим";
Текущий архив: 2008.09.07;
Скачать: [xml.tar.bz2];
ВнизНастройки в программе Найти похожие ветки
← →
денис_м (2008-07-30 13:08) [0]У меня в программе есть форма с настройками, там достаточно много: TEdit, TUpDown, TTrackBar, TCheckBox, TRadioButton. Сами настройки я храню в отдельном xml-файле, при этом а программе есть:
TSettings = record
AutoLoadFileCheckBox: Boolean;
...
end;
В которую я записываю и из которой считываю информацию во время открытия / закрытия окна настроек. Но мне надоело это порядком уже, при добавлении нового в настройки приходиться добавлять в record, в процедуры название.
Я решил все это автоматизировать. А именно цикломSettingsForm.Components[i]...
выбирать нужный класс из окна настроек и записывать для него данные. Но вот куда записывать их во время работы программы?
Еще раз: (код просто для наглядности, на case не смотрите)with SettingsForm do
for i := 0 to ComponentsCount - 1 do
case Components[i].ClassName of
TEdit: соранить text
TCheckBox: сохранить checked
...
куда это все записывать? в массив? (сразу записывать и считывать в файл не годиться) как лучше сделать?
← →
KilkennyCat © (2008-07-30 13:11) [1]
> сразу записывать и считывать в файл не годиться
сразу все записывать и считывать в файл годиться. при нажатии какой-нить кнопки "применить" или как ее там...
← →
денис_м (2008-07-30 13:14) [2]Ну мне в любом случае во время работы программы нужно иметь доступ к настройкам. Не буду же я каждый раз когда мне требуется только лишь узнать свернуть ли окно в панель задач или в трей - открывать файл искать там настройку и считывать ее. Лучше сразу все эти настройки хранить в памяти.
← →
AlexanderMS © (2008-07-30 13:15) [3]Например, так:
with SettingsForm do
for i := 0 to ComponentsCount - 1 do
if Components[i].ClassName = "TEdit"
then СохранитьТекст(TEdit(Components[i]).Text)
...
← →
AlexanderMS © (2008-07-30 13:18) [4]Я не до конца прочитал вопрос... :)
Ну в общем можно создать одну record:
TSettings = record
TextData : string;
CheckboxChecked : Boolean;
...
end;
а потом обращаться кSettings : TSettings;
← →
KilkennyCat © (2008-07-30 13:20) [5]
> денис_м (30.07.08 13:14) [2]
> Ну мне в любом случае во время работы программы нужно иметь
> доступ к настройкам. Не буду же я каждый раз когда мне требуется
> только лишь узнать свернуть ли окно в панель задач или в
> трей - открывать файл искать там настройку и считывать ее.
> Лучше сразу все эти настройки хранить в памяти.
И сразу все потерять, если електроны в розетке кончатся, а бесперебойника нету?
← →
brother © (2008-07-30 13:21) [6]> если електроны в розетке кончатся,
те? ты считал настройки и используй их, если есть изменения, дозаписывай, и снова в памяти держи...
зы тока не говори что электроны могут кончится во время перезаписи... это уже не к нам)
← →
Anatoly Podgoretsky © (2008-07-30 13:25) [7]> денис_м (30.07.2008 13:14:02) [2]
Ух ты у тебя и иконка есть там где часики.
← →
brother © (2008-07-30 13:26) [8]> там где часики.
он хот уже "запузырил" - респект! )
← →
KilkennyCat © (2008-07-30 14:06) [9]
> brother © (30.07.08 13:21) [6]
То есть дозаписывать все-равно придется, а?
Тем более, чтооткрытия / закрытия окна настроек
позволяет это делать очень удобно.
Что касается их хранения в каком-то дополнительном массиве, то это, возможно и излишне, если данное окно настроек создается с запуском программы и живет все ее время жизни. Можно ведь обращаться и напрямую к нему. В противном случае, если идет борьба за ресурсы, я бы посчитал тогда нагрузку по обращению именно к файлу, ибо никакого геморроя в этом не вижу, особенно при наличии структуры.
← →
Медвежонок Пятачок © (2008-07-30 14:13) [10]структура в памяти-то тебе зачем?
xml документ сам по себе структура.
← →
brother © (2008-07-30 14:16) [11]> То есть дозаписывать все-равно придется, а?
Или переписывать, как захочешь, но придется ;) Иначе как ты последнее состояние отследишь?
← →
Ega23 © (2008-07-30 14:25) [12]ini-файлы рулят!!!
← →
brother © (2008-07-30 14:25) [13]> ini-файлы рулят!!!
начинается..... ;)
← →
Медвежонок Пятачок © (2008-07-30 14:29) [14]ini-файлы рулят!!!
рулят, только не в ту сторону.
← →
KilkennyCat © (2008-07-30 14:36) [15]Про реестр поговорим? :)
← →
Anatoly Podgoretsky © (2008-07-30 14:44) [16]> KilkennyCat (30.07.2008 14:36:15) [15]
Мустафа поджигай!
← →
brother © (2008-07-30 14:45) [17]> Мустафа поджигай!
Махмуд?
← →
Медвежонок Пятачок © (2008-07-30 14:46) [18]Про реестр поговорим? :)
О покойниках только хорошее.
← →
Ega23 © (2008-07-30 15:50) [19]А если серьёзно, то без разницы, в каком виде и как эти параметры хранятся. Один раз загружаются при старте, один раз сохраняются при выходе. Обязателен метод ParamByName и функции AsString AsInteger и т.п.
А как оно там потом храниться будет - да наплевать слюной. Хоть в ini, хоть в xml, хоть в БД, хоть в зашифрованном через RSA бинарнике.
← →
zorik © (2008-07-30 16:12) [20]Я, например, создаю простенький клас со свойствами и с методами LoadFromFile SaveToFile. При запуске программы считываю настройке, в ходе работы меняю. Причем они могут менятся не только после нажатия на "ок" в диалоговом окне параметров, а и, например, при изменении размеров и положений форм и т.д. При закрытии проги все сохраняю.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.09.07;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c