Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Загрузка данных из ini

Ответить
Настройки темы
Delphi - [решено] Загрузка данных из ini

Пользователь


Сообщения: 108
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Загружаю данные таким образом:
Код: Выделить весь код
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 что ли?

Отправлено: 15:44, 11-02-2013

 

Старожил


Сообщения: 295
Благодарности: 30

Профиль | Отправить PM | Цитировать


Сначала посмотри в отладчике или через ShowMessage, какое значение попадает в компонент из ини по факту. Ну а потом можно будет грешить либо на компонент, либо на ини.

Отправлено: 17:57, 11-02-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 108
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Любезный:
Сначала посмотри в отладчике или через ShowMessage, какое значение попадает в компонент из ини по факту. Ну а потом можно будет грешить либо на компонент, либо на ини. »
Посмотрел, данные правильные, вносятся те, что надо, но!!! при изменении каких-либо начальных данных у меня идет пересчет всех данных. Вот пришлось пересмотреть весь код, глаз зацепился за одну процедуру, подумал, что-то не так, посмотрел и увидел, что когда копипастил часть процедуры забыл видимо изменить кое-что и вот результат(

Но еще одна странность, после загрузки настроек Caption у главной формы пустой.

Последний раз редактировалось novashdima, 12-02-2013 в 18:34.


Отправлено: 18:12, 12-02-2013 | #3


Старожил


Сообщения: 295
Благодарности: 30

Профиль | Отправить PM | Цитировать


Отладчик в руки - и вперёд пошаговым прогоном.

Отправлено: 20:34, 12-02-2013 | #4


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата novashdima:
Но еще одна странность, после загрузки настроек Caption у главной формы пустой. »
Не знаю....мне кажется, мало знать, что нужно выбрать "яйца" (is), нужно знать и какие (as).

if Components[i] is TsSpinEdit then
(Components[i] as TsSpinEdit).Value :=...

да и With следует применять, дабы не повторятся в префиксах - Ini.ReadInteger....

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Последний раз редактировалось opel431, 13-02-2013 в 03:59.


Отправлено: 03:51, 13-02-2013 | #5


Пользователь


Сообщения: 108
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата 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, поэтому со вторым траблы вроде бы будут

Отправлено: 06:46, 13-02-2013 | #6


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата novashdima:
я уже использую with для MainForm, поэтому со вторым траблы вроде бы будут »
Это где вы вычитали?

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Отправлено: 08:45, 13-02-2013 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Загрузка данных из ini

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
xrg2inf - экспорт данных реестра в ini/inf формат?... нужно! semiono AutoIt 5 25-01-2010 00:25
VBS/WSH/JS - чтение из INI FlatX007 Скриптовые языки администрирования Windows 1 29-05-2009 18:52
Загрузка - [решено] Загрузка Win XP ( BOOT.INI) Проблема vik a Microsoft Windows 2000/XP 18 02-01-2009 17:41
Выборочная загрузка и выгрузка данных из формы в таблицу MySQL dima1981 Вебмастеру 8 25-08-2008 18:02
[решено] загрузка данных из html форм в таблицу баз mysql dima1981 Вебмастеру 5 16-08-2008 01:34




 
Переход