Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.038 c
14-1096356585
undert
2004-09-28 11:29
2004.10.17
Помогите найти компоненту


1-1096729082
X-Disa
2004-10-02 18:58
2004.10.17
Иконки в exe


3-1095329332
1008
2004-09-16 14:08
2004.10.17
Как ускорить вывод данных?


1-1096821146
001
2004-10-03 20:32
2004.10.17
Как манипулировать дочерними окнами?


14-1096536754
X9
2004-09-30 13:32
2004.10.17
Дрова на звук для мат. платы Gigabyte GA-8SQ800





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