Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.034 c