Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2009, 11:58   #1
Nomad
Пользователь
 
Аватар для Nomad
 
Регистрация: 08.10.2007
Сообщений: 22
Вопрос Проблема с загрузкой параметров из ini-файла

В чем заключается суть проблемы, никак не получается сделать так, чтобы из ini-файла в текстовое поле или выпадающий список, возвращалось значение (текстовая информация), которое было там до завершения работы программы... Написал следующие процедуры:

Код:
procedure TForm1.WriteParametr;
 var
  IniFile:TIniFile;
  path:string;
begin
 path:=Application.ExeName;
 path:=ExtractFileDir(Path);

 if path[Length(path)]<>'\' then
  path:=path+'\';
  IniFile:=TIniFile.Create(path+'\setup.ini');
  IniFile.WriteBool('Form1','Form1.CheckBox1.Checked',Form1.CheckBox1.Checked);
  IniFile.WriteBool('Form1','Form1.CheckBox2.Checked',Form1.CheckBox2.Checked);
  IniFile.WriteBool('Form1','Form1.CheckBox3.Checked',Form1.CheckBox3.Checked);
  IniFile.WriteBool('Form1','Form1.RadioButton1.Checked',Form1.RadioButton1.Checked);
  IniFile.WriteBool('Form1','Form1.RadioButton2.Checked',Form1.RadioButton2.Checked);
  {IniFile.WriteBool('Form1','Form1.ComboBox1.Text',Form1.ComboBox1.Text);
  IniFile.WriteBool('Form1','Form1.ComboBox2.Text',Form1.ComboBox2.Text);}
  {IniFile.WriteString('Form1','Form1.ComboBox1.Text',Form1.ComboBox1.Text);
  IniFile.WriteString('Form1','Form1.ComboBox2.Text',Form1.ComboBox2.Text);}
  IniFile.WriteString('Form1','Form1.Edit10.Text',Form1.Edit10.Text);
  IniFile.WriteString('Form1','Form1.Edit11.Text',Form1.Edit11.Text);
  IniFile.Free;
  Application.Terminate;
end;

procedure TForm1.ReadParametr;
 var
  IniFile:TIniFile;
  path:string;
begin
 path:=Application.ExeName;
 path:=ExtractFileDir(Path);

 if path[Length(path)]<>'\' then
  path:=path+'\';
  IniFile:=TiniFile.Create(path+'\setup.ini');
  Form1.CheckBox1.Checked:=IniFile.ReadBool('Form1','Form1.CheckBox1.Checked',Form1.CheckBox1.Checked);
  Form1.CheckBox2.Checked:=IniFile.ReadBool('Form1','Form1.CheckBox2.Checked',Form1.CheckBox2.Checked);
  Form1.CheckBox3.Checked:=IniFile.ReadBool('Form1','Form1.CheckBox3.Checked',Form1.CheckBox3.Checked);
  Form1.RadioButton1.Checked:=IniFile.ReadBool('Form1','Form1.RadioButton1.Checked',Form1.RadioButton1.Checked);
  Form1.RadioButton2.Checked:=IniFile.ReadBool('Form1','Form1.RadioButton2.Checked',Form1.RadioButton2.Checked);
  {Form1.ComboBox1.Text:=IniFile.ReadBool('Form1','Form1.ComboBox1.Text',Form1.ComboBox1.Text);
  Form1.ComboBox2.Text:=IniFile.ReadBool('Form1','Form1.ComboBox2.Text',Form1.ComboBox2.Text);}
  {IniFile.ReadString('Form1','Form1.ComboBox1.Text',Form1.ComboBox1.Text);
  IniFile.ReadString('Form1','Form1.ComboBox2.Text',Form1.ComboBox2.Text);}
  IniFile.ReadString('Form1','Form1.Edit10.Text',Form1.Edit10.Text);
  IniFile.ReadString('Form1','Form1.Edit11.Text',Form1.Edit11.Text);
  IniFile.Free;
end;
Первая должна служить для записи параметров в файл, вторая для их чтения из него, работает все, кроме возврата текста... В чем здесь может быть дело?

Вот результат работы первой:

[Form1]
Form1.CheckBox1.Checked=1
Form1.CheckBox2.Checked=1
Form1.CheckBox3.Checked=0
Form1.CheckBox4.Checked=0
Form1.CheckBox5.Checked=0
Form1.RadioButton1.Checked=1
Form1.RadioButton2.Checked=0
Form1.Edit10.Text=Волгореченский район
Form1.Edit11.Text=Волгореченский обособленный отдел

Кто что может посоветовать?

Последний раз редактировалось Nomad; 03.08.2009 в 13:38.
Nomad вне форума Ответить с цитированием
Старый 03.08.2009, 12:19   #2
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

А вы уверены что проблемма у вас тут?
Код:
IniFile.ReadString('Form1','Form1.Edit10.Text',Form1.Edit10.Text);
Хотя есть два предположения:
1. Попробуйте написать так:
Код:
IniFile.ReadString('Form1','Form1.Edit10.Text','');
2. Возможно после считывания параметров, вы очищаете поля ввода

И еще. Откройте сам файл и посмотрите, идет ли в него запись этих параметров
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 03.08.2009, 12:22   #3
Nomad
Пользователь
 
Аватар для Nomad
 
Регистрация: 08.10.2007
Сообщений: 22
Вопрос Есть еще одна идея...

Результаты работы процедуры отвечающей за запись параметров я привел, с ней все нормально, файл заполняется...

IniFile.ReadString('Form1','Form1.E dit10.Text','');

Сейчас попробую, может действительно идет очистка поля?

Не помогло, запись как шла так и идет, чтение как не считывало все параметры так и не считывает...

А нельзя ли значение записаное в тектовом поле и сохраненное в ini-файле при запуске программы присвоить какой-нибудь переменной, а от нее передать в текстовое поле?

Последний раз редактировалось Nomad; 03.08.2009 в 13:40.
Nomad вне форума Ответить с цитированием
Старый 03.08.2009, 13:39   #4
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Цитата:
Сообщение от Nomad Посмотреть сообщение
А нельзя ли значение записаное в тектовом поле и сохраненное в ini-файле при запуске программы присвоить какой-нибудь переменной, а от нее передать в текстовое поле?
Можно. Только зачем?

Оооо. Нашел ошибку!!! Делайте так:
Form1.Edit10.Text:=IniFile.ReadStri ng('Form1','Form1.Edit10.Text','');
Искусственный интеллект - фигня по сравнению с естественной глупостью

Последний раз редактировалось KORN; 04.08.2009 в 05:07. Причина: пользуемся правкой
Impuls1989 вне форума Ответить с цитированием
Старый 03.08.2009, 14:06   #5
Nomad
Пользователь
 
Аватар для Nomad
 
Регистрация: 08.10.2007
Сообщений: 22
По умолчанию

Нет значит смысла... Правильно я понимаю, что WriteString и ReadString по свиом свойствам идентичны и различие между ними только в выполняемом действии? В этом случае строки по записи и чтению по сути должны также практически совпадать? Ладно, впереди еще ночь, попробую еще разобраться...
Nomad вне форума Ответить с цитированием
Старый 03.08.2009, 14:17   #6
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Как это нет? Есть конечно. ReadString('<Имя модуля>','<имя параметра>',<параметр по умолчанию>)
<параметр по умолчанию> - возвращается в том случае, если параметр с
именем <имя параметра> в блоке не найден. - и ReadString - это функция
WriteString('<Имя модуля>','<имя параметра>',<значение параметра>) -
записывает в блок, в параметр с именем <имя параметра>,<значение параметра> - и это процедура
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 03.08.2009, 16:04   #7
Nomad
Пользователь
 
Аватар для Nomad
 
Регистрация: 08.10.2007
Сообщений: 22
Лампочка Вобщем решили проблему...

Немного опоздал, как раз хотел написать строку:

Form1.Edit10.Text:=IniFile.ReadStri ng('Form1','Form1.Edit10.Text','');

Ну что же, спасибо за помощь!

Последний раз редактировалось Nomad; 03.08.2009 в 16:45.
Nomad вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с чтением из INI файла JustKurt Общие вопросы Delphi 3 04.08.2009 20:47
Чтение параметров из ini файла Яр|/||< (^_^) Общие вопросы Delphi 2 29.06.2009 20:54
Вывод некоторых параметров из *.ini (или *.txt) файлов в поля Label grey Помощь студентам 11 14.02.2009 10:58
Ошибка, связанная с загрузкой из файла! kayman Помощь студентам 5 01.06.2008 21:23