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

Вниз

BAPDriveBox Version: 1.01 - bugs   Найти похожие ветки 

 
tamerlan311 ©   (2003-05-11 15:36) [0]

при уничтожении компонента BAPDriveBox Version: 1.01
(процес остается жить) если начать работать с диском (вставить или вытащить диск) - через 5 сек программа горорит КРЯ-ЯЯЯЯ!


 
BaRToV   (2003-05-11 17:20) [1]

2 tamerlan311

Вообще-то голосовые функции в компонентые отсутствуют и поэтому "КРЯКАТЬ", как утка он не может ;-)

Опиши подробнее что к чему...
И еще, на мыло пишите о багах, у меня не всегда почему-то форум грузится...

Начнем по порядку:

1. В МСК используется визуализация, где создается реальный Run-Time компонент:

procedure TKOLBAPDriveBox.CreateKOLControl(Recreating: boolean);
begin
FKOLCtrl := PControl(NewBAPDriveBox(KOLParentCtrl, TRUE,
clHighlightText, clHighlight));
end;

2. Вот деструктор в KOLBAPDriveBox.pas, который вызывается при уничтожение компонента и в MCK:

destructor TDriveData.Destroy;
begin
Timer1.Enabled := False;
Free_And_Nil(Timer1);
Free_And_Nil(IL);
Free_And_Nil(VolList);
if FBAPDriveBoxs <> nil then
( FBAPDriveBoxs) [1]
2 tamerlan311

Вообще-то голосовые функции в компонентые отсутствуют и поэтому "КРЯКАТЬ", как утка он не может ;-)

Опиши подробнее что к чему...
И еще, на мыло пишите о багах, у меня не всегда почему-то форум грузится...

Начнем по порядку:

1. В МСК используется визуализация, где создается реальный Run-Time компонент:

procedure TKOLBAPDriveBox.CreateKOLControl(Recreating: boolean);
begin
FKOLCtrl := PControl(NewBAPDriveBox(KOLParentCtrl, TRUE,
clHighlightText, clHighlight));
end;

2. Вот деструктор в KOLBAPDriveBox.pas, который вызывается при уничтожение компонента и в MCK:

destructor TDriveData.Destroy;
begin
Timer1.Enabled := False;
Free_And_Nil(Timer1);
Free_And_Nil(IL);
Free_And_Nil(VolList);
if FBAPDriveBoxs <> nil then
Free_And_Nil(FBAPDriveBoxs);
inherited;
end;


KOL/MCK 1.73, Delphi 5 и 7, Windows XP - ПРОБЛЕМ НЕТ!!!

Если у кого-то возникает такая же ошибка - напишите здесь!!!


 
BaRToV   (2003-05-11 17:40) [2]

Хм... Получается интересная штука...

destructor TDriveData.Destroy;
begin
MessageBox(0, "Destroy", "BAPDriveBox", MB_OK);

Timer1.Enabled := False;
Free_And_Nil(Timer1);
Free_And_Nil(IL);
Free_And_Nil(VolList);
if FBAPDriveBoxs <> nil then
( FBAPDriveBoxs) [2]
Хм... Получается интересная штука...

destructor TDriveData.Destroy;
begin
MessageBox(0, "Destroy", "BAPDriveBox", MB_OK);

Timer1.Enabled := False;
Free_And_Nil(Timer1);
Free_And_Nil(IL);
Free_And_Nil(VolList);
if FBAPDriveBoxs <> nil then
Free_And_Nil(FBAPDriveBoxs);
inherited;
end;

http://delphikol.narod.ru/docs/WritingComp.htm
Ничего не сказано про деструктор...

В Run-Time Destroy вызывается, а в Design-Time - НЕТ...
Смотрим что к чему...


 
BaRToV   (2003-05-11 19:36) [3]

Все, нашел.

if Applet <> nil then // WM_DEVICECHANGE
( WndProcDriveChange) [3] Все, нашел.

if Applet <> nil then // WM_DEVICECHANGE
Applet.AttachProc(WndProcDriveChange);

WndProcDriveChange вызывается, когда даже BAPDriveBox1.Free;


 
BaRToV   (2003-05-11 21:18) [4]

Ок.

Для тех кто не хочет ждать обновления, исправте в KOLBAPDriveBox.pas:

destructor TDriveData.Destroy;
begin
Timer1.Enabled := False;
Free_And_Nil(Timer1);
Free_And_Nil(IL);
Free_And_Nil(VolList);
FBAPDriveBoxs.Remove(FControl);
if FBAPDriveBoxs.Count = 0 then
Free_And_Nil(FBAPDriveBoxs);

inherited;
end;

...

(* ОБРАБОТЧИК WM_DEVICECHANGE *)

function WndProcDriveChange(Ctl: PControl; var Msg: TMsg; var Rslt: Integer): Boolean;
var
...
begin
Result := False;
if FBAPDriveBoxs = nil then
Exit;

if Msg.message = WM_DEVICECHANGE then
( Sender: PObj) [4]
Ок.

Для тех кто не хочет ждать обновления, исправте в KOLBAPDriveBox.pas:

destructor TDriveData.Destroy;
begin
Timer1.Enabled := False;
Free_And_Nil(Timer1);
Free_And_Nil(IL);
Free_And_Nil(VolList);
FBAPDriveBoxs.Remove(FControl);
if FBAPDriveBoxs.Count = 0 then
Free_And_Nil(FBAPDriveBoxs);

inherited;
end;

...

(* ОБРАБОТЧИК WM_DEVICECHANGE *)

function WndProcDriveChange(Ctl: PControl; var Msg: TMsg; var Rslt: Integer): Boolean;
var
...
begin
Result := False;
if FBAPDriveBoxs = nil then
Exit;

if Msg.message = WM_DEVICECHANGE then
...
end;



2 tamerlan311

procedure TForm1.Button1Click(Sender: PObj);
begin
if BAPDriveBox1 <> nil then
BAPDriveBox1.Free;
end;


 
BaRToV   (2003-05-12 16:43) [5]

2 ALL

Все что выше описано делается НЕ так.
См. http://delphimaster.net/view/11-1052726119/
Качайте v1.02 и смотрите ( сайт ночью обновлять буду):
http://delphikol.narod.ru/comps/BAPDriveBox.zip



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
1-93461
Igor Bykov
2004-01-15 12:41
2004.01.29
textfile


3-93404
BlackCat
2003-12-30 08:35
2004.01.29
Страное поведение MS Access....


6-93596
_новый_
2003-11-25 09:54
2004.01.29
IdFTP


1-93516
(Yorok)
2004-01-18 15:22
2004.01.29
Нужна функция, которая работает быстрее SetFileAttributes.


9-93319
Dead Moroz
2003-07-01 03:42
2004.01.29
Движок для текстового 3D_Shooter-а