Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.20;
Скачать: CL | DM;

Вниз

Как обновить данные в программе?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
1-64586
Elka
2002-05-06 17:15
2002.05.20
Сохранение свойств визуальных компонентов


7-64851
Serg001
2002-02-23 18:29
2002.05.20
Как узнать на какой файл ссылается ярлык.


1-64602
Korin
2002-05-07 18:19
2002.05.20
Нажатие кнопок мыши


1-64703
yastal
2002-05-06 14:08
2002.05.20
скрыть иконки на рабочем столе


1-64614
DenKop
2002-05-06 21:25
2002.05.20
ParamStr(1)