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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2009, 20:38   #1
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию не загружается ini файл в Delphi

Здравствуйте, пишу программу со сменой настроек страницы. Насиройки сохраняются в ini файл. По началу всё работало, но после файл с настройками перестал загружаться, хотя сохранение работает как надо... Уже всё перепробывал, не пойму в чём дело...
Код загрузки:
Код:
uses IniFiles
................
public
    { Public declarations }
end;

const
     Section: String='Main';
var
   IniFile: TIniFile;
   Form1: TForm1;
   stily,FullFileName,ShortFileName,ava,image: String;
.....................................
procedure TForm1.OnShow(Sender: TObject);
begin
//загрузка 
  if IniFile<>nil then begin
    ShortFileName:='Options.ini';   FullFileName:=ExtractFilePath(Application.ExeName)+PathDelim+ShortFileName;
    IniFile:=TIniFile.Create(FullFileName);
    stily:=IniFile.ReadString(Section,'stily',stily);
    ava:=IniFile.ReadString(Section,'Image',image);
    IniFile.Free;
//применение настроек
    SkinData.LoadFromCompressedFile(stily);
    Image.Picture.LoadFromFile(ava);
  end;
end;
Если надо сохранение, то вот:
Код:
uses IniFiles
................
public
    { Public declarations }
end;

const
     Section: String='Main';
var
   IniFile: TIniFile;
   Form2: TForm2;
   stily,FullFileName,ShortFileName: String;
..............................
procedure TOptions.btOKClick(Sender: TObject);
begin
// сохранение
  ShortFileName:='Options_'+Organizer.lbNameStructure.Caption+'.ini'; FullFileName:=ExtractFilePath(Application.ExeName)+PathDelim+ShortFileName;
  IniFile:=TIniFile.Create(FullFileName);
  IniFile.WriteString(Section,'stily',stily);
  IniFile.WriteString(Section,'Image',image);
  IniFile.Free;
Ошибки ни какой не выдаёт, всё работает, но ничего не загружается...
Пробывал добавить в Form1 Edit (для проверки на загрузку) и присвоить ему значение stily (Edit1.text:=stily; ) Edit пустой.... Что именно не правельно?!?!
TaYgA вне форума Ответить с цитированием
Старый 29.10.2009, 20:42   #2
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Эээ...
Ну при сохранении:
Цитата:
ShortFileName:='Options_'+Organizer .lbNameStructure.Caption+'.ini';
А при загрузке:
Цитата:
ShortFileName:='Options.ini';
Даже если Organizer.lbNameStructure.Caption = '', то все равно '_' лишняя!
k1r1ch вне форума Ответить с цитированием
Старый 29.10.2009, 20:52   #3
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Извеняюсь, в загрузке я чуть упростил и назвал всё своими именами... А так всё аналогично (Organizer .lbNameStructure-Form1.Label). Т.е. и имя сохраняемого и загружаемого одно и тоже....
TaYgA вне форума Ответить с цитированием
Старый 29.10.2009, 20:53   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Пройдитесь F7, смотрите значения переменных, где что не так - узнаете сразу.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.10.2009, 21:11   #5
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Спасибо, разобрался...
Код:
if IniFile<>nil then begin \\ с этой стройкой не работает загрузка
    ShortFileName:='Options_.ini';    FullFileName:=ExtractFilePath(Application.ExeName)+PathDelim+ShortFileName;
    IniFile:=TIniFile.Create(FullFileName);
    stily:=IniFile.ReadString(Section,'stily',stily);
    IniFile.Free;
    bsSkinData1.LoadFromCompressedFile(ExtractFilePath(ParamStr(0))+stily);
  end ;
Скажите, а как правельно написать код, для проверки существует ли файл!??!?!
TaYgA вне форума Ответить с цитированием
Старый 29.10.2009, 21:16   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Скажите, а как правельно написать код, для проверки существует ли файл!??!?!
if not fileexists(filename) then //нема файла

...еще, как помню вы ini файл несколько раз пользуете в программе. Не проще-ли один раз создать в create, а уничтожить в onclose?
...всю эту конструкцию можно упростить
Код:
ini:= TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
и не надо никаких проверок, нет файла - создается, есть- загружается
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 29.10.2009 в 21:21.
raxp вне форума Ответить с цитированием
Старый 29.10.2009, 21:20   #7
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Спасибо Это другая форма, мне на каждой форме нужно загрузить настройки страницы... Один раз не получится т. к. компонент bsSkinData добавляется на каждой форме.....

Последний раз редактировалось TaYgA; 29.10.2009 в 21:25.
TaYgA вне форума Ответить с цитированием
Старый 29.10.2009, 21:23   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Спасибо Это другая форма, мне на каждой форме нужно загрузить настройки страницы. Или когда прописываешь в FormCreate оно автоматически во всех загружается
- нет, достаточно будет поставить загрузку параметров всех форм при создании последней формы
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 29.10.2009 в 21:26. Причина: конечно, если они не динамически у вас создаются когда-нибудь потом
raxp вне форума Ответить с цитированием
Старый 29.10.2009, 21:31   #9
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Спасибо, буду пробывать....
TaYgA вне форума Ответить с цитированием
Старый 30.10.2009, 09:56   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ещё добавлю.
если Вы уж делаете
Код:
if IniFile<>nil then begin
тогда будьте добры обнулять указатель!
для этого вместо IniFile.Free;
вызывайте фукнцию:
Код:
 FreeAndNil(IniFile)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TShortCut и INI-файл Sd.Ghost Общие вопросы Delphi 4 07.04.2011 22:32
Почему файл не загружается на форум? Вадим Буренков О форуме и сайтах клуба 8 15.07.2009 09:07
ini файл cheef Общие вопросы Delphi 5 28.04.2009 07:36
ini Файл Volkogriz Общие вопросы Delphi 1 12.11.2008 13:44
ini файл Simply-Art Общие вопросы Delphi 3 17.06.2007 14:43