![]() |
|
|
#1
|
|||
|
|||
![]() Проблема такая, хочу сохранять настройки в ини файл. Вроде написал правильно, но вот такая ошибка:
![]() Код: Код:
procedure TForm1.FormCreate(Sender: TObject); var F: TIniFile; begin script.Clear; F := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'window.ini'); F.ReadString('tools', 'edit1', form12.Edit1.text); end; procedure TForm12.Button1Click(Sender: TObject); var F: TIniFile; begin F := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'window.ini'); F.WriteString('tools', 'edit1', form12.Edit1.Text); F.Free; end; Если убираю строчку F.ReadString('tools', 'edit1', form12.Edit1.text); то компилится без ошибок. Последний раз редактировалось Мяфк, 08.10.2010 в 01:34. |
#2
|
||||
|
||||
![]() Что то мне подсказывает, что файл после FormCreate надо закрыть ну или F переменную отчистить.
Ещё вариант, что edit1 в функци FormCreate ещё не создался. Попробуй пихнуть код в FormShow |
#3
|
|||
|
|||
![]() Цитата:
Это ошибка не компиляции, а времени исполнения. Вы, скорее всего, обращаетесь к объекту, который в этот момент не существует. Обработчик события Create формы вызывается сразу после ее создания. В этот момент 12ой формы еще не существует. Соответсвенно, вы получаете ошибку. Лучше всего параметр со значением по умолчанию задать константой. |
#4
|
|||
|
|||
![]() 12 форма у меня есть, только у него визибл фалс по стандарту стоит, не ужели из-за этого?
|
#5
|
||||
|
||||
![]() уверены что форм12 есть? при запуске приложения форм12 сама не открывается...
попробуйте.. Код:
procedure TForm1.FormCreate(Sender: TObject); var F: TIniFile; begin script.Clear; F := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'window.ini'); Form12.ShowModal; F.ReadString('tools', 'edit1', form12.Edit1.text); end; procedure TForm12.Button1Click(Sender: TObject); var F: TIniFile; begin F := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'window.ini'); F.WriteString('tools', 'edit1', form12.Edit1.Text); F.Free; end; |
#6
|
||||
|
||||
![]() eXplorer ты не прав.
Сам попробуй свой код и получишь ту же ошибку. а разгадка кроется тут: Код:
program Project1; ........... begin Application.Initialize; Application.CreateForm(TForm1, Form1); ............... Application.CreateForm(TForm12, Form12); Application.Run; end. Form12 создается гораздо позже Form1. И событие Form1.OnCreate срабатывает соответственно раньше. Если уж так хочется, то самый простой способ решения проблемы - перенести чтение из ини в ОнКриэйт Формы12. |