Главная страница
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.054 c
3-1095329332
1008
2004-09-16 14:08
2004.10.17
Как ускорить вывод данных?


14-1096530739
1008
2004-09-30 11:52
2004.10.17
Есть возомжность обзавестись, не знаю надо ли


14-1095846283
080D:07BBh
2004-09-22 13:44
2004.10.17
Предложение.


1-1096962670
Мирон
2004-10-05 11:51
2004.10.17
не работает Timer в отдельном потоке


4-1094910339
race1
2004-09-11 17:45
2004.10.17
ширина окошки