Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизОшибка при работе с DLL Найти похожие ветки
← →
Denis © (2005-02-16 12:11) [0]Приветствую.
Такая проблема. Есть DLL одна из функций которой создает и открывает форму. В момент открытия и закрытия формы, во время работы с ней вызывающее приложение не проявляет никаких эмоций. А в момент закрытия самого вызывающего приложения все валится с ошибкой "...Память не может быть read." Если же не обращаться к данной функции - все нормально.
Вызываемая форма работает с MSSQL через ADO.
Подскажите, в какую сторону смотреть? Если нужен код - приведу.
← →
clickmaker © (2005-02-16 12:17) [1]что делает функция? приведи описание
← →
Digitman © (2005-02-16 12:20) [2]
> в какую сторону смотреть?
в сторону ошибок в твоем коде
← →
Denis © (2005-02-16 12:30) [3]функция запускает следующую процедуру:
procedure showOrganization; stdcall; export;
begin
Connect;
FormOrgan:=TFormOrgan.Create(nil);
FormOrgan.ShowModal;
FormOrgan.Free;
Disconnect;
end;
где
Procedure Connect;
begin
Connection:=TAdoConnection.Create(nil);
Connection.ConnectionString:=SUConStr;
Connection.LoginPrompt:=false;
Connection.CursorLocation:=clUseServer;
Connection.DefaultDatabase:=DefaultBase;
Connection.Open;
end;
Procedure Disconnect;
begin
Connection.Close;
Connection.Free;
end;
← →
Denis © (2005-02-16 12:31) [4]функция запускает следующую процедуру:
procedure showOrganization; stdcall; export;
begin
Connect;
FormOrgan:=TFormOrgan.Create(nil);
FormOrgan.ShowModal;
FormOrgan.Free;
Disconnect;
end;
где
Procedure Connect;
begin
Connection:=TAdoConnection.Create(nil);
Connection.ConnectionString:=SUConStr;
Connection.LoginPrompt:=false;
Connection.CursorLocation:=clUseServer;
Connection.DefaultDatabase:=DefaultBase;
Connection.Open;
end;
Procedure Disconnect;
begin
Connection.Close;
Connection.Free;
end;
← →
Digitman © (2005-02-16 12:38) [5]
> одна из функций которой ..
> функция запускает следующую процедуру
а где собственно функция-то ? экспортируемая ?
как грузишь ДЛЛ - статически или динамически ?
показывай как ты обращаешься к ДЛЛ в хост-приложении ..
← →
Denis © (2005-02-16 13:18) [6]гружу статически.
есть dcu-файл, который я прописываю в uses. он содержит прототипы функций. та, о которй говорим состоит из одной строки и вызывает упомянутую процедуру. Не спрашивайте почему - не я это писал, но мне приходится с этим разбираться...
кстати, заметил, что на моей машине, где изначально разрабатывалось хост-приложение, ошибок нет.
на той, где разрабатывалась dll и, похоже, на остальных в отделе - эта ошибка. :-\
← →
Digitman © (2005-02-16 13:27) [7]покажи прототип
← →
Denis © (2005-02-16 13:37) [8]нашел. эта процедура таки напрямую вызывается, а не из функции. извиняюсь, перепутал. :(
это из модуля, где собраны все прототипы:
procedure showOrganization; stdcall; External SuSystem;
SUSystem - строковая константа.
← →
Digitman © (2005-02-16 13:41) [9]а что в форме творится ?
на какой модуль, который якобы вызвал такую ошибку, ссылается программа при выводе сообщения об ошибке ?
← →
Denis © (2005-02-16 13:56) [10]форма - справочник организаций.
используется многими модулями системы, потому в длл.
при открытии все ADOquery, ADOcommand подключаются к созданному Connection.
Пользователь работает с базой, все обычно - поиск, добавление, удаление, редактирование. При закрытии все указанные объекты отсоединяются от Connection, который затем уничтожается.
Ни какой модуль конкретно не называет. Говорит, мол, проект Admin.exe raised ... Access violation ...
← →
Denis © (2005-02-16 14:19) [11]Так. По всей видимости, толку от нашего диалога не будет... Потому как тут наверное прийдется выкладывать код как длл, так и хост приложения, чтобы разобраться где кто порылся...
Наверное покопаюсь я и вернусь позже с более конкретными вопросами. Хотя и сейчас от совета не отказался бы...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.031 c