Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Access violation


syte_ser78 ©   (2005-10-25 12:25:00) 

Делаю следующим образом

DPR
--------
begin
     Application.Initialize;
     frm_resourse:=Tfrm_resourse.Create(Application);
     frm_resourse.programm_path:=ExtractFilePath(Application.ExeName);
     frm_resourse.load_setting;

.....
--------

frm_resourse.pas
----------
 public
   ......
   load_setting:procedure;
   programm_path:string;
 end;

.......

procedure load_setting;
var
  IniFile: TIniFile;
begin
  IniFile:=TIniFile.Create(frm_resourse.programm_path+'main.ini');
  frm_resourse.last_user:=IniFile.ReadInteger('last','user',0);
  frm_resourse.last_number_TZ:=IniFile.ReadInteger('last','tz',0);
  frm_resourse.last_number_drawing:=IniFile.ReadInteger('last','draving',0);
  frm_resourse.ini_files:='main.ini';
end;

........
----------

в результате в dpr при вызове frm_resourse.load_setting; получаю сабж.

Как сделать правильно?


syte_ser78   (2005-10-25 14:01:00) [1]

frm_resourse.pas
_________________
type
   ....
   procedure load_setting;
   ....

procedure tfrm_resourse.loaad_setting;
.....

_________________

Так заработало. Спасибо


Digitman   (2005-10-25 14:00:00) [2]


> syte_ser78 ©   (25.10.05 13:52) [11]


begin
    Application.Initialize;
    frm_resourse:=Tfrm_resourse.Create(Application);
    frm_resourse.programm_path:=ExtractFilePath(Application.ExeName);
    frm_resourse.load_setting;
.....
--------

frm_resourse.pas
----------
public
  ......
  procedure load_setting; //объявляем процедурный метод класса, а не рег.процедуру !
  ..
end;

.......

//реализуем этот процедурный метод
procedure Tfrm_resourse.load_setting;
var
 IniFile: TIniFile;
begin
 IniFile:=TIniFile.Create(programm_path+'main.ini');
 try
  last_user:=IniFile.ReadInteger('last','user',0);
  last_number_TZ:=IniFile.ReadInteger('last','tz',0);
  last_number_drawing:=IniFile.ReadInteger('last','draving',0);
  ini_files:='main.ini';
 finally
  IniFile.Free;
 end;
end;


syte_ser78   (2005-10-25 13:52:00) [3]

clickmaker ©   (25.10.05 12:55) [8]
а чем это плохо?

Digitman ©   (25.10.05 12:55) [7]
Извините, можно поподробнее?


Плохиш   (2005-10-25 13:07:00) [4]


> Digitman ©   (25.10.05 12:55) [7]

Точно! Извращения начинающих неисповедимы.


Digitman   (2005-10-25 12:57:00) [5]


> syte_ser78 ©   (25.10.05 12:50) [5]
> Не поверите, использывал!


не поверю.

если бы использовал, то давно бы увидел, что на момент вызова load_setting() значение одноименного поля объекта равно nil


Digitman   (2005-10-25 12:55:00) [6]


> Плохиш ©   (25.10.05 12:45) [4]


"на деревню дедушке" указывает не frm_resourse, а load_setting

это ж надо так извратиться - использовать ссылку на рег.процедуру вместо метода объекта, использование которого здесь просто очевидно !


clickmaker   (2005-10-25 12:55:00) [7]


> syte_ser78 ©   (25.10.05 12:50) [5]

а зачем в ф-ии-члене класса явно юзать переменную frm_resourse?


syte_ser78   (2005-10-25 12:54:00) [8]

Плохиш ©   (25.10.05 12:45) [4]
??? Не понял


syte_ser78   (2005-10-25 12:50:00) [9]

Digitman ©   (25.10.05 12:41) [2]
Не поверите, использывал!


Плохиш   (2005-10-25 12:45:00) [10]


>   IniFile:=TIniFile.Create( frm_resourse.programm_path+'main.
> ini');

ССЗБ (c) АП :-)

В этот момент переменная ещё указывает "на деревню дедушке"


syte_ser78   (2005-10-25 12:44:00) [11]

frm_resourse - data module если это чтото меняет


Digitman   (2005-10-25 12:41:00) [12]


> syte_ser78 ©   (25.10.05 12:25)  


использовать встроенный отладчик для поиска "неисправностей" религия не позволяет ?


Ega23   (2005-10-25 12:33:00) [13]

ExtractFilePath(ParamStr(0))  ?

Хотя, мне кажется, что дело не в этом...


Наверх

Титульная страница Поиск, карта сайта Написать письмо