Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "KOL";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
14-93626
Knight
2004-01-08 15:43
2004.01.29
Почему у Adobe вечно проблемы с русским?


1-93492
Карелин Артем
2004-01-12 12:54
2004.01.29
Минимизация модальных окон.


14-93689
SH
2004-01-06 14:12
2004.01.29
Граббер картинок


1-93440
Lkan
2004-01-16 07:16
2004.01.29
динамический массив


14-93629
Magician
2004-01-02 11:04
2004.01.29
документация по написанию драйверов под Win2k





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский