Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
Внизплохой компонент Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.053 c