 |
|
novashdima |
11-02-2013 15:44 2087946 |
Загрузка данных из ini
Загружаю данные таким образом:
Код:
procedure TIniOptions.LoadSettings(Ini: TIniFile);
var chk, i: integer;
begin
if Ini <> nil then
begin
if not Ini.SectionExists('TsSpinEdit')
then chk := MessageDlg('Неверные данные!', mtError, [mbOk] , 0)
else
begin
with MainForm do
for I := 0 to ComponentCount - 1 do
begin
if Components[i] is TsSpinEdit
then TsSpinEdit(Components[i]).Value := Ini.ReadInteger('TsSpinEdit', TsSpinEdit(Components[i]).Name, 0);
if Components[i] is TsCheckBox
then TsCheckBox(Components[i]).Checked := Ini.ReadBool('TsCheckBox', TsCheckBox(Components[i]).Name, False);
if Components[i] is TsComboBox
then TsComboBox(Components[i]).ItemIndex := Ini.ReadInteger('TsComboBox', TsComboBox(Components[i]).Name, 0);
end;
end;
end;
end;
И все бы хорошо, да один компонент присваивает неправильное значение, при повторной загрузке данных из файла все норм.
Процедура обработки при изменении данных одна на все, поэтому такой баг должен был быть везде.
П.С. После загрузки данных на этом самом компоненте значение становится равным максимально возможному, причем такое возможно только если при вводе данных ввели значение больше максимального, тогда присваивается максимальному значению, но все равно странно...
Еще интересно, какое использовать диалоговое окно типа MessageDlg (с указанием типа сообщений и кнопок), но без возвращаемой кнопки (ShowMessage не подходит). Только мучаться с MessageBox что ли?
|
Сначала посмотри в отладчике или через ShowMessage, какое значение попадает в компонент из ини по факту. Ну а потом можно будет грешить либо на компонент, либо на ини.
|
novashdima |
12-02-2013 18:12 2088846 |
Цитата:
Цитата Любезный
Сначала посмотри в отладчике или через ShowMessage, какое значение попадает в компонент из ини по факту. Ну а потом можно будет грешить либо на компонент, либо на ини. »
|
Посмотрел, данные правильные, вносятся те, что надо, но!!! при изменении каких-либо начальных данных у меня идет пересчет всех данных. Вот пришлось пересмотреть весь код, глаз зацепился за одну процедуру, подумал, что-то не так, посмотрел и увидел, что когда копипастил часть процедуры забыл видимо изменить кое-что и вот результат(
Но еще одна странность, после загрузки настроек Caption у главной формы пустой.
|
Отладчик в руки - и вперёд пошаговым прогоном.
|
Цитата:
Цитата novashdima
Но еще одна странность, после загрузки настроек Caption у главной формы пустой. »
|
Не знаю....мне кажется, мало знать, что нужно выбрать "яйца" (is), нужно знать и какие (as).
if Components[i] is TsSpinEdit then
(Components[i] as TsSpinEdit).Value :=...
да и With следует применять, дабы не повторятся в префиксах - Ini.ReadInteger....
|
novashdima |
13-02-2013 06:46 2089240 |
Цитата:
Цитата opel431
if Components[i] is TsSpinEdit then
(Components[i] as TsSpinEdit).Value :=... »
|
(Component[i] as TsSpinEdit).Value = TsSpinEdit(Components[i]).Value
Цитата:
Цитата opel431
да и With следует применять, дабы не повторятся в префиксах - Ini.ReadInteger.... »
|
я уже использую with для MainForm, поэтому со вторым траблы вроде бы будут
|
Цитата:
Цитата novashdima
я уже использую with для MainForm, поэтому со вторым траблы вроде бы будут »
|
Это где вы вычитали?
|
Время: 10:15.
© OSzone.net 2001-