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

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

Где найити о inherited [D7, XP]


Страницы:   1 2 3

Keks ©   (2006-04-22 23:29:00) 

Добрый вечер. Поскажите пожалуйста где можно почитать о использовании ключевого слова inherited


Keks   (2006-04-23 00:46:00) [21]

Причем если вызвать только один раз конструктор, т.е. наблюдать за одним принтером, а потом вызвать для него деструктор то все нормально проходит.
А вот если подряд уже вызывать несколько конструкторов, то потом при вызове деструктора для каждого из них появляется ошибочка


Kolan   (2006-04-23 00:43:00) [22]

И где возникает Floating point ....ошибка?


Keks   (2006-04-23 00:42:00) [23]

FNotifyThread: array of TNotifyThread;


Джо   (2006-04-23 00:38:00) [24]

> [18] Keks ©   (23.04.06 00:36)

Да нет, ты не понял. Интересно было бы взглянуть на объявление переменной FNotifyThread, т.е, ее тип.


Джо   (2006-04-23 00:37:00) [25]

> [17] Leonid Troyanovsky ©   (23.04.06 00:35)

Скорее всего так и есть. Также, скорее всего, это вообще не имеет отношение к проблеме. Ибо   FNotifyThread[i] := TNotifyThread.Create(FPrinter1, PRINTER_CHANGE_JOB);наводит на всякие интересные предположения :)


Keks   (2006-04-23 00:36:00) [26]

Type
TNotifyThread = class(TThread)
  Private
    FName:string;
    FFinder: THandle;
    FFlags: DWORD;
    FOnNotify: TNotifyEvent;
  protected
    Procedure DoNotify;
    Procedure Execute; override;
  Public
    FPrinter: THandle;
    Constructor Create(APrinter: THandle; AFlags: DWORD);
    Destructor  Destroy; override;
    Property    OnNotify: TNotifyEvent read FOnNotify write FOnNotify;
    Property    Name:string            read FNAme     write Fname;

End;


Procedure TForm1.FormDestroy(SEnder: TObject);
var i: integer;
Begin
for i:=0 to Prn.Count-1 do begin
  FPrinter1:=FNotifyThread[i].FPrinter;
  FreeAndNil(FNotifyThread[i]);
  WinSpool.ClosePrinter(FPrinter1);
end;
End;


Leonid Troyanovsky   (2006-04-23 00:35:00) [27]


> Keks ©   (22.04.06 23:40) [4]

> inherited Create(True);


Видимо оный класс наследуется от TThread, тогда этот
вызов создает поток (в приостановленном состоянии).

--
Regards, LVT.


Джо   (2006-04-23 00:31:00) [28]

> А здесь автоматически в цикле для каждой созданной нити
> вызывается деструктор
>  FreeAndNil(FNotifyThread[i]);

Слушай, приведи описание того, чем является FNotifyThread. И цикл.


Keks   (2006-04-23 00:29:00) [29]

Как я понимаю он уничтожает ранее созданные объекты
Вот так я создаю нить для наблюдения в цикле
  FNotifyThread[i] := TNotifyThread.Create(FPrinter1, PRINTER_CHANGE_JOB);

А здесь автоматически в цикле для каждой созданной нити вызывается деструктор
  FreeAndNil(FNotifyThread[i]);

Описание кода деструктора и конструктора я написал выше


Джо   (2006-04-23 00:29:00) [30]

> [7] Keks ©   (22.04.06 23:53)
> для чего Inherited Create(true)

Смотри исходный текст предка TNotifyThread. У него должен быть конструктор, принимающий параметр типа Boolean. Вот его-то ты и вызываешь.


Kolan   (2006-04-23 00:22:00) [31]

я вызываю Constructor в цикле для
Уже раз 10 прочитал, но так и не понял. А вы понимаете что делает деструктор ?


Kolan   (2006-04-23 00:19:00) [32]

Keks ©   (23.04.06 00:18) [11]
Архивчик никому не нужОн. Дай участки связаные с проблеммой.


Keks   (2006-04-23 00:18:00) [33]

могу дать архивчик проекта он маленький


Kolan   (2006-04-23 00:09:00) [34]

Keks ©   (22.04.06 23:59) [9]
Трудно понять что происходит нужен код...


Keks   (2006-04-22 23:59:00) [35]

Може ли это возникнуть из-за того что каждый раз конструктор вызывается с разными параметрами


Keks   (2006-04-22 23:58:00) [36]

у меня возникает проблема вот в чем: я вызываю Constructor в цикле для наблюдения за несколькими разными принтерами, а  при событии FormClose в цикле вызываю Destructor но тут же вылетает ошибка Invalid Floating operation


Keks   (2006-04-22 23:53:00) [37]

для чего Inherited Create( true)


Джо   (2006-04-22 23:48:00) [38]

TBaseClass = class
 procedure A; virtual;
end;

TChildClass = class (TBaseClass)
 procedure A; override;
end;

procedure TBaseClass.A;
begin
 ShowMessage ('BaseClass.A');
end;

procedure TChildClass.A;
begin
 inherited; // вызовет метод предка
 ShowMessage ('ChildClass.A');
end;


Джо   (2006-04-22 23:46:00) [39]

Вызывает виртуальный метод (в данном случае, конструктор и деструктор) предка.


Keks   (2006-04-22 23:40:00) [40]

Для чего он вообще используется вот тут например:
Constructor TNotifyThread.Create(APrinter: THandle; AFlags: DWORD);
Begin
FPrinter := APrinter;
FFlags := AFlags;
inherited Create(True);
End;

Destructor TNotifyThread.Destroy;
Begin
 inherited;
End;


Страницы:   1 2 3

Наверх

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