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

Вниз

Invalid Pointer Operation в DLL. (не из-за String)   Найти похожие ветки 

 
46_55_41_44 ©   (2004-09-30 13:14) [0]

Почему при создании модальной формы из DLL после ее закрытия вылетает Invalid Pointer Operation!!!


 
Мастер ©   (2004-09-30 13:48) [1]

Потому что в DLL ошибка в 17-й строке.


 
46_55_41_44 ©   (2004-09-30 14:16) [2]

То есть? Можно по подробнее?


 
TUser ©   (2004-09-30 14:20) [3]

Покажи код DLL"ки ... и приложения


 
46_55_41_44 ©   (2004-09-30 14:35) [4]

процедурка, которая вызывает форму:

Procedure OpenForm(My_App: TApplication; FormID : Integer);
begin
 if Application <> My_App then
   Application := MY_App;
 Active_Form := FormID;
 case FormID of
   ...
   211: Application.CreateForm(Tfrm_gin, frm_gin)
   ...
 end;
end;

в frm_gin.FormCreate  
...
 ShowModal;
end;

formClose
begin
 Action := caFree;
 frm_gin := nil;
end;

А остальное ничего особенного. Все нормально работает... просто почему-то при закрытии выдается Invalid Pointer Operation.
Есть ли какие-то специальные правила создания модальных форм из ДЛЛ?


 
TUser ©   (2004-09-30 14:40) [5]

Вот здесь, наверное, выскакивает
>  frm_gin := nil;


 
46_55_41_44 ©   (2004-09-30 14:42) [6]

да нет.. не там


 
46_55_41_44 ©   (2004-09-30 14:43) [7]

Уточнение... При закрытии приложения выдается ошибка...


 
46_55_41_44 ©   (2004-09-30 14:44) [8]

То есть, если не открывать модальную форму все идет прекрасно!


 
Гаврила ©   (2004-09-30 14:46) [9]

>>Application.CreateForm(Tfrm_gin, frm_gin)

Замени на
frm_gin:=Tfrm_gin.Create(nil);

может дело в этом


 
46_55_41_44 ©   (2004-09-30 14:51) [10]

нет... и не в этом... Никто не может помочь моему горю? :)


 
Мастер ©   (2004-09-30 16:31) [11]


library Formsdll;
uses
 SysUtils,
 windows,
 Classes,
 ufModalOk,
 Controls,
 Forms;

function ShowYesNo(const Text: ShortString):Bool;stdcall;
begin
 Application.CreateForm(TfModalOk,fModalOk);
 Result := fModalOk.ShowModal=mrOk;
 fModalOk.Free;
end;

exports
   ShowYesNo;
end.


 
TUser ©   (2004-09-30 16:56) [12]

Наверное, так. Форма создана - owner у нее Application. Ты ее потом дестроишь, а при закрытии приложения снова вызывается деструктор. Короче, [9].


 
Babay ©   (2004-10-01 08:36) [13]

Подключение DLL статическое или динамическое?
Был уменя подобный глюк при статическом подключении и когда использовался компонет XPManifest. Убираем XPManifest все ок, ставим обратно имеем ошибку.
Лечил динамическим подключением DLL. Все работает.
Ошибку отследить до конца так и не удалось, она возникает где-то на уровне менеджера стилей в Д. (если конечно я все правильно понял).
Вопрос по этому поводу как-то задавал но вразумительного ответа так и не получил. Возможно у тебя тот самый случай.


 
Гаврила ©   (2004-10-01 10:15) [14]


> [12] TUser ©   (30.09.04 16:56)


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

Вообще тут меня очень смущает строчка
Application := MY_App;
передаем указатель на объект в библиотеку из хоста. При компиляции без ран-тайм пакетов это, имхо, недопустимо



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

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

Наверх




Память: 0.5 MB
Время: 0.047 c
14-1096272345
WondeRu
2004-09-27 12:05
2004.10.17
Фотоальбом


8-1090576151
Руслан
2004-07-23 13:49
2004.10.17
Нет ли у кого-нибудь алгоритма IMA (DVI) ADPCM 2-bit?


9-1087138876
Жора
2004-06-13 19:01
2004.10.17
Перемещние по карте


10-1050070965
Aleksandr
2003-04-11 18:22
2004.10.17
Ну не пойму я никак, как сделать разрешение/запрет на соединение!


14-1096293438
QuasiLamo
2004-09-27 17:57
2004.10.17
Пинг