![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Где найити о inherited [D7, XP]
Keks © (2006-04-22 23:29:00)Добрый вечер. Поскажите пожалуйста где можно почитать о использовании ключевого слова inherited
Джо (2006-04-23 14:51:00) [1]> [41] begin...end © (23.04.06 09:16)
Точно.
Anatoly Podgoretsky (2006-04-23 11:17:00) [2]Во написал то.
inherited значит От предка, просто опускает имя и возможно параметры
begin...end (2006-04-23 09:16:00) [3]> Джо © (22.04.06 23:46) [5]
Не обязательно виртуальный. Например, конструктор TThread.Create виртуальным методом как раз не является.
Keks (2006-04-23 01:46:00) [4]Дааааааа, вот что значит писать програмки поздней ночью :)
Блин аш самому обидно что не доглядел. Спасибо за помощь.
Leonid Troyanovsky (2006-04-23 01:27:00) [5]
> Keks © (23.04.06 01:17) [36]
> SetLength(FNotifyThread, Prn.Count-1);
А зачем -1?
--
Regards, LVT.
Johnmen (2006-04-23 01:27:00) [6]
> Keks © (23.04.06 01:17) [36]
>
> Я нашел ошибку но вот почему именно это приводило к проблеме
> что-то я так и не понял.
> Оказывается дело в том что переменную FNotifyThread я описывал
> как динамический массив( FNotifyThread: array of TNotifyThread;
> ), хотя потом и выделял под нее память функцией SetLength(FNotifyThread,
> Prn.Count-1);
Думается, что размер д.б. Prn.Count.
Keks (2006-04-23 01:27:00) [7]Може есть другая функция для выделения памяти для динамического массива
Keks (2006-04-23 01:17:00) [8]Я нашел ошибку но вот почему именно это приводило к проблеме что-то я так и не понял.
Оказывается дело в том что переменную FNotifyThread я описывал как динамический массив( FNotifyThread: array of TNotifyThread;), хотя потом и выделял под нее память функцией SetLength(FNotifyThread,Prn.Count-1);
А когда сделал статический массив ( FNotifyThread: array[0..10] of TNotifyThread;) то все нормально заработало
Johnmen (2006-04-23 01:11:00) [9]>Keks ©
Как выделяется память под динамический массив FNotifyThread ?
Kolan (2006-04-23 01:08:00) [10]Project - Options - Compiler USE Debug DCUs
Keks (2006-04-23 01:06:00) [11]Подскажите где в среде D7 есть опция что бы при отладке он залазил не только внутрь моих процедур но и внутрь системных процедур.
Keks (2006-04-23 01:02:00) [12]>Leonid Troyanovsky © (23.04.06 00:57) [28]
>Подряд несколько таких вызовов:
>FNotifyThread[i] := TNotifyThread.Create(FPrinter1, PRINTER_CHANGE_JOB)?
>А FPrinter1 где назначается?
Да подряд идут именно эти вызовы, а отличаются они как раз переменной FPrinter1 которая предварительно так же в цикле принимает значение из процедуры :WinSpool.OpenPrinter(PChar(Prn[i]), FPrinter1, nil)
Leonid Troyanovsky (2006-04-23 00:59:00) [13]
> Keks © (23.04.06 00:57) [29]
> Этому как раз и была посвящена тема я думал проблема в этом
Этот деструктор можно было даже не описывать, бо он ничего
сверх родительского не делает.
--
Regards, LVT.
Kolan (2006-04-23 00:58:00) [14]Нет
inherited; - вызовет Деструктор TThread. Проблема не сдесь.
Ты что - то походу делаешь. Память где-то портишь. Возми memProof и посмотри
Leonid Troyanovsky (2006-04-23 00:57:00) [15]
> Keks © (23.04.06 00:46) [23]
> А вот если подряд уже вызывать несколько конструкторов
Подряд несколько таких вызовов:
FNotifyThread[i] := TNotifyThread.Create(FPrinter1, PRINTER_CHANGE_JOB)?
А FPrinter1 где назначается?
--
Regards, LVT.
Keks (2006-04-23 00:57:00) [16]А в деструторе вот что:
Destructor TNotifyThread.Destroy;
Begin
inherited;
End;
Этому как раз и была посвящена тема я думал проблема в этом
Keks (2006-04-23 00:55:00) [17]Вот ксатит относительно отладки у меня маленькая проблемка я никак не могу найти в среде D7 установку что бы он залазил внутрь системных процедур.
Kolan (2006-04-23 00:55:00) [18]А в деструкторе у тебя ничего? Код его дай.
Пока вроде ошибок нет...
Keks (2006-04-23 00:52:00) [19]При первом же вызове деструктора для первого потока пишет Invalid pointer operation и дальше Access Violeation и т.д.
Kolan (2006-04-23 00:49:00) [20]А что в десткрукторе?
ЗЫ
Ты отлаживать пробовал я надеюсь...