Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.10.2010, 01:32
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию Ini файл

Проблема такая, хочу сохранять настройки в ини файл. Вроде написал правильно, но вот такая ошибка:


Код:
Код:
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  
Старый 08.10.2010, 02:03
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Что то мне подсказывает, что файл после FormCreate надо закрыть ну или F переменную отчистить.

Ещё вариант, что edit1 в функци FormCreate ещё не создался.

Попробуй пихнуть код в FormShow
Ответить с цитированием
  #3  
Старый 08.10.2010, 07:09
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Uniq!
Что то мне подсказывает, что файл после FormCreate надо закрыть ну или F переменную отчистить.

Ещё вариант, что edit1 в функци FormCreate ещё не создался.

Попробуй пихнуть код в FormShow

Это ошибка не компиляции, а времени исполнения.
Вы, скорее всего, обращаетесь к объекту, который в этот момент не существует. Обработчик события Create формы вызывается сразу после ее создания. В этот момент 12ой формы еще не существует. Соответсвенно, вы получаете ошибку.
Лучше всего параметр со значением по умолчанию задать константой.
Ответить с цитированием
  #4  
Старый 08.10.2010, 07:52
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию

12 форма у меня есть, только у него визибл фалс по стандарту стоит, не ужели из-за этого?
Ответить с цитированием
  #5  
Старый 08.10.2010, 09:12
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

уверены что форм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  
Старый 08.10.2010, 10:18
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

eXplorer ты не прав.
Сам попробуй свой код и получишь ту же ошибку. а разгадка кроется тут:
Код:
program Project1;

...........

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  ...............
  Application.CreateForm(TForm12, Form12);
  Application.Run;
end.

Form12 создается гораздо позже Form1. И событие Form1.OnCreate срабатывает соответственно раньше. Если уж так хочется, то самый простой способ решения проблемы - перенести чтение из ини в ОнКриэйт Формы12.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:49.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025