Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
1-64648
Rikoshet
2002-05-03 17:25
2002.05.20
Как в Richedit-е сделать всю строку, на которой стоит каретка, ск


1-64674
HDD
2002-05-05 04:59
2002.05.20
Помогите пожалуйста!


3-64488
mivv
2002-04-22 20:46
2002.05.20
Index ignore


1-64643
dlK
2002-05-05 17:39
2002.05.20
Помогите плз. НЕ главное окно программы минимизируется на десктоп


3-64456
Demon Ltd
2002-04-24 22:33
2002.05.20
Замена записи в таблице





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский