Главная страница
    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.007 c
4-64869
Serd_hhc
2002-03-17 10:44
2002.05.20
Хук (или ещё что), не использубю DLL.


1-64626
alkmas
2002-05-08 12:22
2002.05.20
Вызов объекта класса из DLL


3-64461
Саша
2002-04-25 07:46
2002.05.20
глюк Dbgrid


1-64652
zx
2002-05-08 13:44
2002.05.20
TempDir


1-64601
MisterBin
2002-05-07 15:41
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский