Главная страница
    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.037 c
14-1096029033
квакер
2004-09-24 16:30
2004.10.17
Команда в кваке


4-1095219660
Настенька
2004-09-15 07:41
2004.10.17
кнопка Пуск


9-1087387768
Elf
2004-06-16 16:09
2004.10.17
Перспектоглюк


3-1095403625
vero
2004-09-17 10:47
2004.10.17
знаковость Real types


8-1090748068
Окна
2004-07-25 13:34
2004.10.17
Допустим есть два окна, одно перекрывает другое..





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