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

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

Как правильно подключить обьект или в чем ошибка?...


Страницы:   1 2

Andrewtitoff ©   (2008-03-20 10:37:00) 

Здравствуйте!, нагублил я тут вроде как полезную вещь для обработки ошибок под названием TgsCatcher
( http://www.codenet.ru/progr/delphi/stat/errors.php)
использовал этот вариант:
( http://www.delphikingdom.com/asp/answer.asp?IDAnswer=58915)
Тока ничего немогу понять Создал я в своей проге новый юнит, засунул туда все это дело, все замечательно откомпилировалось, после чего его вроде как и написано в статье подключил т.е. описал обьект "ааа" класса TgsCatcher после чего установил его св-во enabled в true, как и написанно в статье, вот только после этого появилась ошибка "Access violation at address 0048C7A1 in module Project_Lift.exe"....
выделяет эту строку:

procedure TgsCatcher.SetEnabled(const Value: boolean);
begin
 FEnabled := Value;
^^^^^^^^^^^^^^^^^^
end;


Что не так я делаю?, подскажите пожалуйста!...


unit Unit_FormMain;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, AccessXP, OleServer, StdCtrls, Buttons, ExtCtrls, ImgList,
 Printers, Unit_My,Unit_New,Unit_VViezda,Unit_Form_PPEdit,Unit_VPuska,Unit_Password, mmsystem, Menus, Unit2,gsCatcher;

type
 TFormMain = class(TForm)
   Exit: TBitBtn;
   ...    
  procedure FormCreate(Sender: TObject);
  ...    
 private

 public
   { Public declarations }
 end;

 var
 FormMain : TFormMain;
 ...
 aaa : TgsCatcher;

   implementation

uses Unit_FormShow, Unit_New_menu, Unit_Message, Unit_FormEditSP,
 Unit_FormSkPEdit, Unit_FormDemo;

{$R *.dfm}

procedure TFormMain.FormCreate(Sender: TObject);
begin
aaa.Enabled:=true;
...
end;


Andrewtitoff   (2008-03-20 11:54:00) [21]

2 Ega23
В смысле?

2 Сергей М.
Ну да, тотока причина то в чем?, я вообще непонимаю уже ничего при чем тут эта сторока....  =((((

2 Kolan
Сейчас вот так пробовал:

....
procedure TFormMain.FormCreate(Sender: TObject);
begin
aaa.Create(nil);
aaa.Enabled:=true;
.....
end;
....

а вообще как я понял можно так:

aaa.Create(FormMain);


Сергей М.   (2008-03-20 11:47:00) [22]


> ошибка так и неисчезла


Как это не исчезла ?
Исчезла)

А то что ты видишь - это уже другие ошибки)


Ega23   (2008-03-20 11:46:00) [23]


> Andrewtitoff ©   (20.03.08 11:44) [14]


Стопудово form_New создавать религия не позволяет.


Kolan   (2008-03-20 11:46:00) [24]

> тока ошибка так и неисчезла…

Код покажи, мало ли как тебе ясно стало…


Andrewtitoff   (2008-03-20 11:44:00) [25]

2 Сергей М.
Пасибо!, теперь все ясно!,
тока ошибка так и неисчезла...
First chance exception at $7C81EB33. Exception class EAccessViolation with message 'Access violation at address 00410E01 in module 'Project_Lift.exe'. Read of address 00000000'. Process Project_Lift.exe (3976)
First chance exception at $7C81EB33. Exception class EAccessViolation with message 'Access violation at address 00410A91 in module 'Project_Lift.exe'. Read of address 00000276'. Process Project_Lift.exe (3976)
First chance exception at $7C81EB33. Exception class EAccessViolation with message 'Access violation at address 00410A91 in module 'Project_Lift.exe'. Read of address 00000276'. Process Project_Lift.exe (3976)

И указывает теперь почему то на строку юнита основной формы:

 procedure TFormMain.Timer1Timer(Sender: TObject);
begin
.....
  if form_New.Active then form_New.VPost.Caption:=copy(DateTimeToStr(time),12,8);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
end;


Ega23   (2008-03-20 11:28:00) [26]


> А про владельцев можно немножко поподробнее? =))))

Конечно можно.


Owner property (TComponent)
Indicates the component that is responsible for streaming and freeing this component.

Delphi syntax:

property Owner: TComponent;

C++ syntax:

__property TComponent* Owner = {read=FOwner};

Description

Use Owner to find the owner of a component. The Owner of a component is responsible for two things:

The memory for the owned component is freed when its owner's memory is freed. This means that when a form is destroyed, all the components on the form are also destroyed.
The Owner is responsible for loading and saving the published properties of its owned controls.

By default, a form owns all components that are on it. In turn, the form is owned by the application. Thus when the application shuts down and its memory is freed, the memory for all forms (and all their owned components) is also freed. When a form is loaded into memory, it loads all of the components that are on it.

The owner of a component is determined by the parameter passed to the constructor when the component is created. For components created in the form designer, the form is automatically assigned as the Owner.

Warning: If a component has an Owner other than a form or data module, it will not be saved or loaded with its Owner unless you identify it as a subcomponent. To identify a component as a subcomponent, call the SetSubComponent method.


Сергей М.   (2008-03-20 11:28:00) [27]


> Andrewtitoff ©   (20.03.08 11:22) [10]


Попросту компонент-владелец - это компонент, которому ты поручаешь быть "ответственным" за уничтожение твоего компонента, если ты сам явно не уничтожаешь свой компонент.
Компонент-владелец, перед тем как его уничтожают, уничтожает все существующие компоненты, владельцем которых он назначен.
В кач-ве владельца допустимо указывать nil - в этом случае ответственность за явное уничтожение своего компонента возлагается на тебя самого.


Kolan   (2008-03-20 11:27:00) [28]

> можно немножко

Можно, читай TComponent.Owner Propertyв справке.


Andrewtitoff   (2008-03-20 11:22:00) [29]

А про владельцев можно немножко поподробнее? =))))


Kolan   (2008-03-20 11:20:00) [30]

Так поделились же.
1. Оъекты надо создавать.
2. У компонентов есть владелец.

А подробности в справке ищи, там они есть…


Andrewtitoff   (2008-03-20 11:19:00) [31]

Ну спасибо!, я смотрю вы все такие добрые и просто мечтаете поделиться опытом...  =))))))))))))))


Ega23   (2008-03-20 11:18:00) [32]


> Дворники в дубне настолько суровы, что подметают лопатой  :).


Ломом, Колян. Исключительно ломом.


Kolan   (2008-03-20 11:14:00) [33]

> бери лопату в руки и иди подметать улицу

Дворники в дубне настолько суровы, что подметают лопатой :).


Ega23   (2008-03-20 11:13:00) [34]


> Эх.., если бы у меня с английским еще нормально было....   =((((


Если бы у бабушки... Ну, ты в курсе.
Не можешь читать справку - бери лопату в руки и иди подметать улицу, программирование не для тебя.


Andrewtitoff   (2008-03-20 11:10:00) [35]

Эх.., если бы у меня с английским еще нормально было....  =((((


Kolan   (2008-03-20 10:51:00) [36]

> AOwner : TComponent);

Владельца пиши, подробности в справке есть.


Andrewtitoff   (2008-03-20 10:49:00) [37]

Ааа.., ну да, а что там в скобках то писать надо, чего то непойму?...  =((((
aaa.Create(AOwner : TComponent);


tesseract   (2008-03-20 10:38:00) [38]

А кто объект создавать  будет ?


Страницы:   1 2

Наверх

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