Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Ошибка в параметре формы


Автор: Heriz 22.4.2010, 13:33
В программе есть проверка языка из INI-файла. Перевод работает в меню и тулбарах, но в отдельной форме с настройками не много не так. Он меняет Caption у трех элементов, но в начале Delphi выдает ошибку после которой все даже очень работает.
Ошибка
user posted image
Код
Код

procedure TForm1.FormCreate(Sender: TObject);
var
   MyFile:TIniFile;
   dir:string;
   xp:string;
   lang:string;
begin
Timer1Timer(timer1);
   xp:='xp';
   //Create and type nothing
   MyFile:=TIniFile.Create('txedit_config'+'.ini');
   MyFile.WriteString('TEXTEDIT','Hello','World!');
     //Icons checking
   with myfile do
   if readstring('ICONS','Main menu','xp')=xp then
   mainmenu1.Images:=imagelist1 else mainmenu1.Images:=Imagelist2;
   with myfile do
   if readstring('ICONS','Popup Menu 1','xp')=xp then
   mainmenu1.Images:=imagelist1 else popupmenu1.Images:=Imagelist2;
   with myfile do
   if readstring('ICONS','Popup Menu 2','xp')=xp then
   mainmenu1.Images:=imagelist1 else popupmenu2.Images:=Imagelist2;
   with myfile do
   if readstring('ICONS','Toolbar','xp')=xp then
   mainmenu1.Images:=imagelist1 else toolbar1.Images:=Imagelist2;
   //Reading Languages
   fn:=myfile.readString('LANGUAGE','Language','');
   GetDir(0,dir);
   myfile:=TIniFile.Create(Fn);
      capt:=myfile.ReadString('LANGUAGE','MMenuFile','');
      File1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuFileNew','');
      new1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuFileOpen','');
      Open1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuFileSave','');
      Save1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuFileSaveAs','');
      SaveAs1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuFileExit','');
      Exit1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuEdit','');
      Edit1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuEditCopy','');
      Copy1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuEditCut','');
      Cut1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuEditPaste','');
      Paste1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuEditPasteTAD','');
      PasteTimeDate1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuEditSelectAll','');
      SelectAll1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuEditPrintSetup','');
      Print1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuEditPrint','');
      Print2.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuEditFind','');
      Find1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuEditFindAR','');
      FindandReplace1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuFormat','');
      Format1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuFormatFont','');
      Font1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuFormatWordWrap','');
      WordWrap1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuFormatWWOn','');
      On1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuFormatWWOff','');
      Off1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuOptions','');
      Options1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuHelp','');
      Help1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuHelpHelpNY','');
      Helpnotyet1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuHelpReadme','');
      Readme1.caption:=capt;
      capt:=myfile.ReadString('LANGUAGE','MMenuHelpAbout','');
      About1.caption:=capt;
            capt:=myfile.ReadString('LANGUAGE','OptionsLanguage','');
      Form3.GroupBox1.caption:=capt;/вот здесь жалуется
            capt:=myfile.ReadString('LANGUAGE','OptionsIcons','');
      Form3.GroupBox2.caption:=capt;
            capt:=myfile.ReadString('LANGUAGE','OptionsYes','');
      Form3.BitBtn1.caption:=capt;
   myfile:=TIniFile.Create('txedit_config'+'.ini');
   myfile.WriteString('LANGUAGE','Language',Fn);
   toolbar1.Transparent:=true;
  end;

Автор: Frees 22.4.2010, 13:39
Цитата(Heriz @  22.4.2010,  16:33 Найти цитируемый пост)
Ошибка

в какой строке то

Добавлено через 7 минут и 12 секунд
а во увидил в какой... ты обращаешся к Form3 из Form1 где ты создал Form3?

зы Код ужасный....

Автор: Демо 22.4.2010, 13:49
Цитата(Frees @  22.4.2010,  13:39 Найти цитируемый пост)
ты обращаешся к Form3 из Form1 где ты создал Form3?


Да эта форма у автора не создана ещё, вот и ошибка.

Автор: Frees 22.4.2010, 13:57
Цитата(Heriz @  22.4.2010,  16:33 Найти цитируемый пост)
  
Код

 with myfile do
   if readstring('ICONS','Main menu','xp')=xp then
     mainmenu1.Images:=imagelist1 
   else 
     mainmenu1.Images:=Imagelist2;   
   with myfile do ...

это улынуло


Цитата(Heriz @  22.4.2010,  16:33 Найти цитируемый пост)
 myfile:=TIniFile.Create(Fn);

Цитата(Heriz @  22.4.2010,  16:33 Найти цитируемый пост)
 MyFile:=TIniFile.Create('txedit_config'+'.ini');

Цитата(Heriz @  22.4.2010,  16:33 Найти цитируемый пост)
 myfile:=TIniFile.Create('txedit_config'+'.ini');

3 Create и ни одного Free - утечка памяти!!!



Автор: Heriz 22.4.2010, 16:48
Form3 есть
Даю http://cid-4389728b84bab8fd.skydrive.live.com/self.aspx/.Public/TextEdit.rar?lc=1049(ссылка недействительна)
Поместить в папку WINDOWS http://cid-4389728b84bab8fd.skydrive.live.com/self.aspx/.Public/txedit%5E_config.ini(ссылка недействительна)

Автор: Heriz 22.4.2010, 20:17
Цитата(Демо @  22.4.2010,  13:49 Найти цитируемый пост)
Да эта форма у автора не создана ещё, вот и ошибка. 

Форма есть. И я дал только одну процедуру из 500 строк.
Цитата

3 Create и ни одного Free - утечка памяти!!!

Спасибо! Я забыл поставить.
Цитата

зы Код ужасный....

В чем именно?

Автор: Frees 22.4.2010, 21:01
Цитата(Heriz @  22.4.2010,  23:17 Найти цитируемый пост)
В чем именно?

в стиле....

про free и with писал выше;

зачем переменная capt 

Код

      File1.caption := yfile.ReadString('LANGUAGE','MMenuFile','File');

не лучше....?

Добавлено через 1 минуту и 40 секунд
Цитата(Heriz @  22.4.2010,  19:48 Найти цитируемый пост)
Form3 есть

это переменная такая есть.. а сам объект создан?где?

Автор: Heriz 23.4.2010, 12:15
Ну я всегда изменял что-то на другой форме по такому плану: Форма.Компонент.Свойство
А как по другому я не знаю(посмотри исходники). В Uses есть.

Цитата(Frees @  22.4.2010,  21:01 Найти цитируемый пост)
код Pascal/Delphi
1:
      File1.caption := yfile.ReadString('LANGUAGE','MMenuFile','File');

Спасибо.Проверка была написана давно и не изменялась.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)