Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-1089732673
banderas
2004-07-13 19:31
2004.09.19
idTCPServer & idTCPClient Есть ли альтернатива readln ???


3-1093032170
Piter
2004-08-21 00:02
2004.09.19
Вложенные запросы


3-1093237909
Teenager
2004-08-23 09:11
2004.09.19
Как можно создать БД что бы сделать справочник в виде таблицы ?


14-1093770941
able
2004-08-29 13:15
2004.09.19
Вопрос по ноутбукам.


14-1094074242
Soft
2004-09-02 01:30
2004.09.19
О скрытом смысле философии:)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский