Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

плохой компонент   Найти похожие ветки 

 
race1   (2004-09-03 11:37) [0]

отчего дельфи может ругаться на мой компонент сообщением access violation ad address 000000 read of 000000. с виду, вроде, нормальный компонент, юзает потоки, всё должно быть ок. только нажимаю compile, сразу появляется сообщение, если компонент удалить с формы - компиляется нормально

даже если удалять компонент через Inastall packages иногда вылетает дельфя целиком...


 
Amoeba ©   (2004-09-03 11:43) [1]


> плохой компонент [D7]

Истина глаголет твоими устами. Твой компонет написан с ошибками. А вот с какими, не видя кода вряд ли кто-нибудь даст ответ по существу. Телепаты, увы, как всегда в бессрочном отпуске.


 
Семен Сорокин ©   (2004-09-03 11:43) [2]

ну если компонент юзает потоки - то адназначна дельфя глючит...


 
race1   (2004-09-03 11:47) [3]

[1] что-то вроде кривых конструкторов\деструкторов, прочих методов, обращающихся к несуществующим объектам?

[2] да, компонент юзает потоки :(


 
Digitman ©   (2004-09-03 11:49) [4]


> что-то вроде кривых


да все что угодно может быть !


 
race1   (2004-09-03 12:22) [5]

оставил только создание потоков (suspensed = true), execute потоков тоже закомментировал, закомментировал разные методы самого компонента, всё равно при компиляции ругается тем же сообщением. это что же, нельзя написать многопточный компонент?


 
Digitman ©   (2004-09-03 12:28) [6]


> это что же, нельзя написать многопточный компонент?


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


 
Amoeba ©   (2004-09-03 12:29) [7]

Значит, у тебя ошибка в 17-й строке.


 
Семен Сорокин ©   (2004-09-03 12:32) [8]

race1   (03.09.04 12:22) [5]
А код компонента слабо привести?


 
race1   (2004-09-03 12:33) [9]

вобщем, для проверки сделал новый компонент. в конструкторе создаю поток, где execute этого потока пустой цикл пока не terminated. такое дело поставил на форму, компиль - ошибка по адресу 0, чтение по адресу 0 :(


 
Amoeba ©   (2004-09-03 12:37) [10]

Код в студию!


 
race1   (2004-09-03 12:39) [11]

:) ну говрю же - всё пусто :)


unit Component1;
interface
uses
 SysUtils, Classes, tfc;
type
 TComponent1 = class(TComponent)
 protected
   constructor Create(AOwner: TComponent); override;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("Samples", [TComponent1]);
end;

{ TComponent1 }

constructor TComponent1.Create(AOwner: TComponent);
begin
 inherited;
 TFCom := TThreadForComponent.Create(False);
end;
end.



unit tfc;
interface
uses
 Classes;
type
 TThreadForComponent = class(TThread)
 protected
   procedure Execute; override;
 end;
var
 TFCom: TThreadForComponent;
implementation
{ TThreadForComponent }
procedure TThreadForComponent.Execute;
begin
 while not Terminated do
end;
end.

это дело кидаю на форму, компиляю, получаю ошибку


 
Digitman ©   (2004-09-03 12:45) [12]

т.е. я правильно понимаю, что если закомментарить строчку

TFCom := TThreadForComponent.Create(False);

то все проходит на ура ?


 
race1   (2004-09-03 12:58) [13]

да чего-то в d5 вроде работает... не поймёшь...


 
Семен Сорокин ©   (2004-09-03 13:05) [14]

бред какой-то, а кто убивать его (поток) будет? зачем глобальная переменная, когда можно ее в классе твоего компонента объявить?

ЗЫ.
Даже при такой реализации не должно быть AV.


 
BillyJeans   (2004-09-03 13:30) [15]

а TFCom кто такой?


 
Erik1   (2004-09-03 15:54) [16]

Бред не бред, но сколько ты компонентов на форму бросаеш? И TFCom наверника глобальная переменая?


 
race1   (2004-09-03 16:04) [17]

[15]

...
end;
var
TFCom: TThreadForComponent;
implementation
...

внимательнее надо быть ;)

скорее всего это баги либо дельфи, либо мои. первое менее вероятно, вроде пустой компонент на пустой форме компиляет. нужно получше посмотреть свой компонент


 
Digitman ©   (2004-09-03 16:13) [18]


> race1   (03.09.04 16:04) [17]


> внимательнее надо быть


хоть это напрямую к проблеме и не относится, но внимательнее-то нужно быть как раз тебе

вдумайся, а если более одного компонента будет создано ?


 
Digitman ©   (2004-09-03 16:15) [19]


> race1


к тому же остается загадкой, за каким шутом требуется создавать трэд в дизайн-тайм ... ну в ран-тайм это еще можно как-то понять ..


 
race1   (2004-09-03 17:05) [20]

[18] т.е. брошено на форму два компонента?
[19] да не знаю даже :) попробовать отделять, что ли, десигн от ран тайма...


 
Digitman ©   (2004-09-03 17:10) [21]


> т.е. брошено на форму два компонента?


ну как минимум так ... ссылка-то на первый созданный трэд затирается ссылкой на следующий созданный трэд ! ..


> да не знаю даже


странно это как-то .. ты сам не знаешь, какая функц-ть, в какой момент времени и в каких пределах от компонента требуется ?


> попробовать отделять, что ли, десигн от ран тайма


это уж тебе решать ... может, страт трэда в любом режиме работы компонента чем-то оправдан у тебя ? .. я же не знаю .. потому и выразил сомнение ...


 
race1   (2004-09-04 13:40) [22]

>ну как минимум так ... ссылка-то на первый созданный трэд затирается ссылкой на следующий созданный трэд ! ..

не, такое нельзя

>это уж тебе решать ... может, страт трэда в любом режиме работы компонента чем-то оправдан у тебя ? .. я же не знаю .. потому и выразил сомнение ...

дело в том, что я не вижу причин почему бы компонент не компилялся, пусть он будет с потоками, пусть без. только что сделал новый компонент с нуля, там создаю два потока, потом переделал компонент, где отделял создание потока в десигн-тайме от ран-тайма (в десигн не создавал потоков), всё компилет без проблем. мой же компонент ну ни как не компилит :((



Страницы: 1 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.058 c
8-1088577378
Andrey
2004-06-30 10:36
2004.09.19
Скроллинг картинки


6-1089078139
Алекс А
2004-07-06 05:42
2004.09.19
Как обновить свойства обозревателя ?


4-1091975936
Zer0_no_pass
2004-08-08 18:38
2004.09.19
Растеризация ttf шрифта в консольном приложении


14-1093497132
КаПиБаРа
2004-08-26 09:12
2004.09.19
Опрос


3-1092900466
Zhekson
2004-08-19 11:27
2004.09.19
Редактирование записи которая активна в навигаторе.