Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.11.2009, 14:48
s0manmbula s0manmbula вне форума
Прохожий
 
Регистрация: 06.11.2009
Сообщения: 16
Репутация: 10
По умолчанию Помещение формы в DLL

Доброе время суток!!!

Есть задача: поместить форму (диалог) в dll файл. При закрытии этой формы (не сразу, иногда через какое-то время) происходит ошибка доступа в память:


Мой dll файл выглядит следующим образом:

Код:
var
  DllApp : TApplication;


function ShowAboutForm(MainApp : TApplication; xPos,yPos:Integer; vrs:PChar):Boolean; stdcall;
begin
  try
    if not Assigned(DllApp) then
      begin
        DllApp := Application;
        Application := MainApp;
      end;

    AboutDlgForm:=TAboutDlgForm.Create(Application.MainForm);

    //Выполняются всякие операции с формой и компонентами на ней
    AboutDlgForm.Left:=xPos;
    AboutDlgForm.Top:=yPos;
    AboutDlgForm.Label4.Caption:=vrs;

    //показ модальной формы
    AboutDlgForm.ShowModal;
    if AboutDlgForm.ModalResult= 1 then
      Result:=True
  finally
    if Assigned(DllApp) then
    Application := DllApp; 
    AboutDlgForm.Free;                 //Вот тут скорее всего ошибка?!
  end;
end;

exports
  ShowAboutForm;

И соответственно в моей программе организована динамическая загрузка dll:

Код:
TShowAboutForm = function(MainApp:TApplication; xPos,yPos:Integer; vrs:PChar):Boolean; stdcall;


procedure TForm1.N27Click(Sender: TObject);
var
  H:Cardinal;
  ShowAboutForm:TShowAboutForm;
  xPos,yPos:Integer;
begin
   //Определение положение AboutForm
  xPos:= Form1.Left+((Form1.Width - 449) Div 2);
  yPos:= Form1.Top+((Form1.height - 484) Div 2);
  
  {Загрузка библиотеки}
  H:=LoadLibrary('nms_rss.dll');

  {Получение адреса функции вывода формы}
  @ShowAboutForm:=GetProcAddress(H,'ShowAboutForm');

  {Вызов функции и получение ее результата}
  ShowAboutForm(Application, xPos,yPos,PChar('Какой-то текст'));

  {Выгрузим библиотеку}
  FreeLibrary(H);

end;

ПОМОГИТЕ ИЗБАВИТЬCЯ ОТ ЭТОЙ ОШИБКИ!!!!

Последний раз редактировалось s0manmbula, 06.11.2009 в 14:57.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter