Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2009, 15:46   #1
dani92
Форумчанин
 
Аватар для dani92
 
Регистрация: 17.02.2009
Сообщений: 132
Восклицание Ошибка при загрузке DLL

Здравствуйте, такая проблема возникла:: Когда я открываю программу, dll загружается, но при закрытии программы выдает ошибку RunTime error 216 at 003437E2
В библиотеке лежит форма
Чат по локальной сети http://fmchat.ucoz.kz - протестируйте плиз)))
а так delphi эта лучшая система программирования
dani92 вне форума Ответить с цитированием
Старый 22.04.2009, 15:53   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

216 Access violation EAccessViolation
значит пытаетесь обратится к невашему участку памяти, а точнее скорее всего к обьекту которого уже нет
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.04.2009, 15:55   #3
dani92
Форумчанин
 
Аватар для dani92
 
Регистрация: 17.02.2009
Сообщений: 132
По умолчанию

dll существует в на диске, я его пробовал из другой программы загрузить - все работет нормально
Чат по локальной сети http://fmchat.ucoz.kz - протестируйте плиз)))
а так delphi эта лучшая система программирования
dani92 вне форума Ответить с цитированием
Старый 23.04.2009, 12:22   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А че в DLL написано?
Чесно говря с формами в ДЛЛ поаккуратнее нужно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.04.2009, 13:46   #5
dani92
Форумчанин
 
Аватар для dani92
 
Регистрация: 17.02.2009
Сообщений: 132
По умолчанию

exports ShowAbout index 15; - вото это написано в юните

А это в юните самой формы в DLL

Код:
var
  Form1: TForm1;
  procedure ShowAbout(Handle: THandle);export;stdcall;

  implementation

{$R *.dfm}
procedure ShowAbout(Handle: THandle);
begin
Application.Handle := Handle;
Form1:= TForm1.Create(Application);
Form1.ShowModal;
Form1.Free;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
     Form1.Close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     Close;
end;

end.
Чат по локальной сети http://fmchat.ucoz.kz - протестируйте плиз)))
а так delphi эта лучшая система программирования
dani92 вне форума Ответить с цитированием
Старый 23.04.2009, 14:06   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Form1.Close;
Думаю Это мешает. Ты все равно потом Form1.Free вызываеш так что убери это дело.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.04.2009, 19:37   #7
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Думаю Это мешает. Ты все равно потом Form1.Free вызываеш так что убери это дело.
скорее всего form1.close вызывается после form1.free. А ты отладчик в DLL не можешь юзать?
Altera вне форума Ответить с цитированием
Старый 24.04.2009, 09:20   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А ты отладчик в DLL не можешь юзать?
Я? )))) Могу, хе-хе

Автор, вот пример:

Главная форма:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  procedure ShowAbout; external 'project2.dll';
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowAbout;
end;

end.
DLL
Код:
library Project2;

uses
  SysUtils,
  Classes,
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}
   procedure ShowAbout;
    var form1:TForm2;
    begin
     Form1:= TForm2.Create(nil);
     Form1.ShowModal;
     Form1.Free;
    end;
exports ShowAbout ;
begin
end.
А что ты в юните второй формы опишеш не суть важно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.04.2009, 12:06   #9
dani92
Форумчанин
 
Аватар для dani92
 
Регистрация: 17.02.2009
Сообщений: 132
По умолчанию

Ниче не помогает, все перепробовал!!! Пишет, что инструкция не может быть read
Чат по локальной сети http://fmchat.ucoz.kz - протестируйте плиз)))
а так delphi эта лучшая система программирования

Последний раз редактировалось dani92; 24.04.2009 в 12:21.
dani92 вне форума Ответить с цитированием
Старый 24.04.2009, 12:52   #10
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Объясните смысл строки
Код:
Application.Handle := Handle;
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ОШИБКА ПРИ ЗАГРУЗКЕ Костян Пират Операционные системы общие вопросы 5 21.02.2009 12:14
Ошибка при загрузке системы Rembo Компьютерное железо 11 09.08.2008 21:54
Ошибка при загрузке.... Ronni10 Операционные системы общие вопросы 6 10.01.2008 22:20
Ошибка при загрузке Delphi 6 bllem Общие вопросы Delphi 10 20.11.2006 20:37