Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.01.2009, 17:48   #1
ScreN
Пользователь
 
Аватар для ScreN
 
Регистрация: 27.12.2008
Сообщений: 88
По умолчанию INI с настройками.

Друзья. Я опять к вам. Я один не могу справится.
Помогите мне еще раз.

Дело вот такое.

Есть 2 формы. Одна главная форма, с программой. Вторая форма, с настройками этой программы.

Так вот. Написал код.

Код:
///////////////////////////
/// Настройки программы INI ///
// Процедура сохранения настроек //
Procedure TForm1.WriteConfig;
Var
  IniFile: TIniFile;
Begin
  IniFile:=TIniFile.Create('..\Имя файла');
   IniFile.WriteBool('ConfigForm','AutoSaveCheck',ConfigForm.AutoSaveCheck1.Checked);
   IniFile.WriteInteger('ConfigForm','TimeEditSave',ConfigForm.TimeEditSave.Value);
   IniFile.WriteBool('ConfigForm','LogFileCheck',ConfigForm.LogFileCheck.Checked);
   IniFile.WriteBool('ConfigForm','ClearBufferCheck',ConfigForm.ClearBufferCheck.Checked);
   IniFile.WriteBool('CinfigForm','SelVista',ConfigForm.SelVista.Checked);
   IniFile.WriteBool('CinfigForm','SelOfficeBlack',ConfigForm.SelOfficeBlack.Checked);
   IniFile.WriteBool('CinfigForm','SelOfficeBlue',ConfigForm.SelOfficeBlue.Checked);
  IniFile.Free;
End;

// Процедура загрузки натсроек //
Procedure TForm1.ReadConfig;
Var
  IniFile: TIniFile;
Begin
  IniFile:=TIniFile.Create('..\Имя файла');
  ConfigForm.AutoSaveCheck1.Checked:=IniFile.ReadBool('ConfigForm','AutoSaveCheck',ConfigForm.AutoSaveCheck1.Checked);
  ConfigForm.TimeEditSave.Value:=IniFile.ReadInteger('ConfigForm','TimeEditSave',ConfigForm.TimeEditSave.Value);
  ConfigForm.LogFileCheck.Checked:=IniFile.ReadBool('ConfigForm','LogFileCheck',ConfigForm.LogFileCheck.Checked);
  ConfigForm.ClearBufferCheck.Checked:=IniFile.ReadBool('ConfigForm','ClearBufferCheck',ConfigForm.ClearBufferCheck.Checked);
  ConfigForm.SelVista.Checked:=IniFile.ReadBool('ConfigForm','SelVista',ConfigForm.SelVista.Checked);
  ConfigForm.SelOfficeBlack.Checked:=IniFile.ReadBool('ConfigForm','SelOfficeBlack',ConfigForm.SelOfficeBlack.Checked);
  ConfigForm.SelOfficeBlue.Checked:=IniFile.ReadBool('ConfigForm','SelOfficeBlue',ConfigForm.SelOfficeBlue.Checked);
  IniFile.Free;
  End;
Это щас он перенесенный у меня в главную форму.

Если я это код пишу в форме с настройками ConfigForm. Тогда все ок сохраняется. Ну то есть, все как надо.

НО. Эти настройки будут загружатся только в том случае, если форма с настройками открыта (Запущена). Тогда идет ReadConfig. Так как у нее в FormCreate стоит ReadConfig...

Но это же не правильно. Так как настройки должны загружаться сразу при старте программы. А не только тогда когда открыта форма с настройками.

Так вот поэтому я и перенес этот, с формы с настройками, на главную форму.

И опять же НО!.. Он не работает в ней. Ошибку при компиляции показывает.

Если кому будет нужно. То могу выслать ScreenShot ошибки..
Помогите мне. У меня из-за этого встал проект.
Заранее спасибо!
ScreN вне форума
Старый 08.01.2009, 17:56   #2
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Можно и без скрина. Что в ошибке пишется?
iankov вне форума
Старый 08.01.2009, 18:09   #3
ScreN
Пользователь
 
Аватар для ScreN
 
Регистрация: 27.12.2008
Сообщений: 88
По умолчанию

Project NameProject.exe raised exception class EAccessViolation
'Access violation at address 0051CA77 in module 'NameProject.exe'.
Read of address 00000308 Process stopped. Use Step or Run to continue

Вот это пишется при компиле.

И подсвечивается синем. вот это строка
Код:
ConfigForm.AutoSaveCheck1.Checked:=IniFile.ReadBool('ConfigForm','AutoSaveCheck',ConfigForm.AutoSaveCheck1.Checked);
ScreN вне форума
Старый 08.01.2009, 18:22   #4
ScreN
Пользователь
 
Аватар для ScreN
 
Регистрация: 27.12.2008
Сообщений: 88
По умолчанию

И еще сходу не выходя из темы.. подскажите мне как написать настройку.
Чтобы ы INI запоминались размер окна. То есть если развернуто. то запомнить в каком оно положении. И при следующем старте, запустить с таким же размером.. То есть развернутым..
Проверка параметров Top Left Height Width косячит..
Вроде все сохраняется.. Но при следующем запуске программы окно получается не развернуто.. а в обычном состоянии.. Но зато на весь экран.. Но не развернуто... Можно ли как нибудь проверить окно на Minimize Maximize.. То есть развернуто ли оно на весь экран или находится в прежнем состоянии. То есть не в развернутом виде
ScreN вне форума
Старый 08.01.2009, 18:49   #5
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

при закрытии проверяй если она wsMaximized тогда записывай как true иначе как false;
Код:
if form1.windowstate=wsMaximized then
ini.writebool('options', 'Maximized', true);
Код:
if form1.windowstate=wsNormal then
ini.writebool('options', 'Maximized', false);
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума
Старый 08.01.2009, 18:56   #6
ScreN
Пользователь
 
Аватар для ScreN
 
Регистрация: 27.12.2008
Сообщений: 88
По умолчанию

И все таки собственно с проблемой настроек помогите мне пожалуйста..

Видать никто мне не поможет

Последний раз редактировалось Stilet; 15.02.2010 в 09:49.
ScreN вне форума
Старый 08.01.2009, 20:01   #7
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от ScreN Посмотреть сообщение
Видать никто мне не поможет
Разве KORN не помог? По-моему, всё исчерпывающе.
Jeni вне форума
Старый 08.01.2009, 20:01   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Так что ж тут непонятного-то?
Судя по этой строке:
ConfigForm.AutoSaveCheck1.Checked:=IniFile.Rea dBool('ConfigForm','AutoSaveCheck', ConfigForm.AutoSaveCheck1.Checked);
и учитывая, что
Цитата:
он перенесенный у меня в главную форму
что у вас получается?
А то, что вы при создании формы Form1 почему-то обращаетесь к еще не созданной форме ConfigForm...
Вот вам и Access violation !
mihali4 вне форума
Старый 08.01.2009, 20:21   #9
ScreN
Пользователь
 
Аватар для ScreN
 
Регистрация: 27.12.2008
Сообщений: 88
По умолчанию

Как это не к созданной? Оно существует.. оно есть..и называется ConfigForm

это вторая форма... с настройками

И что тогда делать? Переносить все настройки обратно в форму ConfigForm... Но тогда зачем они нужны? Если они будут загружатся только при создании формы.. то есть когда она откроется ?

Последний раз редактировалось Stilet; 15.02.2010 в 09:56.
ScreN вне форума
Старый 08.01.2009, 20:34   #10
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

ConfigForm.AutoSaveCheck1.Checked:= IniFile.ReadBool('ConfigForm','Auto SaveCheck',ConfigForm.AutoSaveCheck 1.Checked);
надо писать не так а дефолтное значение т.е. true или false
ConfigForm.AutoSaveCheck1.Checked:= IniFile.ReadBool('ConfigForm','Auto SaveCheck', false);
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск exe с готовыми настройками Shouldercannon Общие вопросы Delphi 4 25.12.2008 21:56
управление настройками BIOS Makcydrl Win Api 2 26.06.2008 05:10
INI исходник xTANATOSx Общие вопросы Delphi 2 05.11.2007 13:50
*.INI Mustang Общие вопросы Delphi 16 09.10.2007 02:33
Управление настройками компьютера из приложения Delphi Saili Общие вопросы Delphi 2 05.12.2006 11:41