Форум: "Основная";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
ВнизКак обновить данные в программе? Найти похожие ветки
← →
Riko (2002-05-03 15:14) [0]В своей программе я использую чтение данных из INI файла. При создании нового INI файла я не могу обновить данные (состояние Чекбоксов, Эдитов и т.д.) в программе, только повторное создание файла обновляет данные. Но файл с новыми данными успешно создаеться с первой попытки. На всякий случай привожу фрагменты кода:
procedure TForm1.Button3Click(Sender: TObject);
begin
if Application.MessageBox("Создать новый ?", "Заголовок",
MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2 or MB_TASKMODAL) = ID_YES then
begin
//Очистка областей и прочее
Edit2.Text := "";
SpinEdit2.Text := "";
CheckBox2.Checked := False;
ComboBox2.Items.Clear;
ComboBox2.Items.Add("1");
ComboBox2.Items.Add("2");
ComboBox2.Items.Add("3");
Edit6.Text := "";
//Вызываю функцию записи INI файла, пишиться все отлично
WriteINI;
//Вызываю функцию чтения INI файла
ReadINI;
end;
end;
//Функция чтения INI файла
procedure TForm1.ReadINI;
Var
IniFile:TIniFile;
begin
IniFile:=TIniFile.Create("ИмяФайла.ini");
Edit2.Text:=IniFile.ReadString("Status","Name",Edit2.Text);
SpinEdit1.Text:=IniFile.ReadString("Status","Number",SpinEdit1.Text);
CheckBox2.Checked:=IniFile.ReadBool("Status","Scan",CheckBox2.Checked);
ComboBox2.ItemIndex:=IniFile.ReadInteger("Status","Index",ComboBox2.ItemIndex);
Edit6.Text:=IniFile.ReadString("Status","Color",Edit6.Text);
IniFile.Free;
end;
Помогите разобраться.
← →
VID (2002-05-03 15:56) [1]В данном случае всё происходит так, как должно происходить. Перед сохранением параметров в INI файл, ты зачем-то сбросил все сохраняемые значения, к "умалчиваемым":
//Очистка областей и прочее
Edit2.Text := "";
SpinEdit2.Text := "";
CheckBox2.Checked := False;
ComboBox2.Items.Clear;
ComboBox2.Items.Add("1");
ComboBox2.Items.Add("2");
ComboBox2.Items.Add("3");
Edit6.Text := "";
Затем сохраняешь параметры (WriteINI), а потом их читаешь (READINI). И получаешь ровно то, что сохранил! Что не так ???
может я чего не понял, ну так объясни поподробнее...
← →
Riko (2002-05-03 16:18) [2]2VID © (03.05.02 15:56)
1. Я сбрасываю все значения на форме проги.
2. WriteINI; - создаю новый файл, совершенно новый, он не четает данные формы, создаеться файл с настройками по умолчанию. Реальная функция записи данных в INI файл называется по-другому.
3. ReadINI; - считываю данные.
Само чтение не стабильное, читаеться только при повторном нажатии на кнопку, а то и при третьем.
← →
Riko (2002-05-03 17:22) [3]Мужики! Извините, что наглею.
Вы же должны знать, пожалуйста, помогите, что делаю неправильно?
← →
VID (2002-05-03 18:58) [4]1. Никаких Exceptions, которые ты обработал Try .. except end, не возникало ?
2. ты пытаешься читать вновь созданный ini файл сразу как создаёшь его ? Если так, то интереса ради, поставь между строками WriteINI и ReadINI, функцию sleep(500); а вдруг поможет ? :)
Покажи реальный код функции WriteINI, а лучше всего юнита (если такое возможно по отношению к твоей ителектуальной собственности :) )
← →
Riko (2002-05-03 19:31) [5]2VID © (03.05.02 18:58)
Данная задержачка
sleep(500);
не помогла.
← →
VID (2002-05-03 22:56) [6]Ну давай код юнита... посмотрим :)
← →
Riko (2002-05-04 11:52) [7]Вот кусок функции записи нового файла с настройками по умолчанию...
Может, что-то с перезаписью я накуралесил:
procedure WriteINI;
var
IniFile: TextFile;
begin
AssignFile(IniFile,"ИмяФайла.ini");
Rewrite(IniFile);
Writeln(IniFile, "Name=Default Options");
Writeln(IniFile, "Number=8");
Writeln(IniFile, "Scan=0");
Writeln(IniFile, "Index=2");
Writeln(IniFile, "Color=Black");
CloseFile(IniFile);
end;
//Функция чтения INI файла
procedure TForm1.ReadINI;
Var
IniFile:TIniFile;
begin
IniFile:=TIniFile.Create("ИмяФайла.ini");
Edit2.Text:=IniFile.ReadString("Status","Name",Edit2.Text);
SpinEdit1.Text:=IniFile.ReadString("Status","Number",SpinEdit1.Text);
CheckBox2.Checked:=IniFile.ReadBool("Status","Scan",CheckBox2.Checked);
ComboBox2.ItemIndex:=IniFile.ReadInteger("Status","Index",ComboBox2.ItemIndex);
Edit6.Text:=IniFile.ReadString("Status","Color",Edit6.Text);
IniFile.Free;
end;
← →
Mister M. (2002-05-04 12:16) [8]I"AM VID.
А нахрена ты AssignFile и прочее используешь ?
К тому же , ты в своей процедуре WriteIni не создал секцию Status.
Создание INI-файла можно осуществить с помощью объекта TINIFILE.
...
Var Ini:TIniFile;
Begin
Ini := TIniFile.Create ("имяфайла.ini");
Ini.WriteString ("Status", "Name", "Default Options");
//и так далее
Ini.Free;
end;
← →
VID (2002-05-05 00:12) [9]vid=mister m.
← →
KilkennyCat (2002-05-05 03:33) [10]А зачем вообще создавать новый файл? разве нельзя проверить, есть ли он уже, и если есть, просто вписывать новые значения? По крайней мере, я так и поступаю.
← →
Nikolay M. (2002-05-06 14:47) [11]А зачем вообще изобретать велосипед? Уже давно существует библиотека RX, в которой есть FormStorage - прекрасно запоминает значения свойств нужных контролов.
ПЫС
...а если с инишками еще и через Readln/Writeln работать, то...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c