Вниз
Скачать: CL | DM;

Access Violation и DLL   Найти похожие ветки 

← →
Mary   (2005-06-01 09:44) [0]

Доброе утро All. Проблема в следующем.
Сделана dll для работы с RaveReports. Единственная функция экспортная для создания DataModule-я, остальные вызываются через интерфейс.
Из основного приложения в определенный момент вызывается функция печати, которая загружает dll, пользует её функции и потом после печати отчета выгружает её.
Первый раз все срабатывает на ура, дальше со второго или любого другого раза валятся ошибки типа Access Vioation, системы появления ошибок выявить не удалось.
Вот кусок кода из функции основного приложения:

try
dllHandle:=GetModuleHandle(pchar(ExtractFilePath(Application.ExeName)+"\DLL\Print.dll"));
if (dllHandle=0) then
dllHandle:=LoadLibrary(pchar(ExtractFilePath(Application.ExeName)+"\DLL\Print.dll"));
try
if dllHandle=0 then Exit;
@MyDllCreate:=GetProcAddress(dllHandle,"CreateDMPrint");
if (@MyDllCreate=nil) then Exit;
dmP:=MyDllCreate(Application.Handle);
if (dmP.GetInterface(IPrintInterface,IPrint)) then begin
// открываем файл проекта
tmp_str := ReturnPrintProjectName(doc_table,doc_type);
if not IPrint.OpenProject(tmp_str) then begin
Showmessage(ReturnErrMsg(11,tmp_str));
Exit;
end;
{ формируем отчет, передаем данные и все такое }
...
Sleep(10);
// вызов сформированного отчета
IPrint.CreateReport(print_type);
end;

finally
dmD.CloseConnection;
IPrint:=nil;
dmP.Free;
dmP:=nil;
FreeLibrary(dllHandle);
Sleep(10);
end;

except
Showmessage("Ошибка");
end;

Мучаюсь довольно давно. Сведущие, откликнитесь, пожалуйста !


← →
evvcom ©   (2005-06-01 10:05) [1]

Что такое dmP - TDataModule? Что делает CreateDMPrint с Application.Handle? И скорее всего самый важный вопрос, стоит ли галка "Build with run-time packages"?


← →
Alx2 ©   (2005-06-01 11:08) [2]

Mary   (01.06.05 9:44)
Может, потому-что не используется модуль ShareMem ?


← →
Digitman ©   (2005-06-01 11:25) [3]


> Mary   (01.06.05 09:44)  


пара вопросов к тебе, напрямую не связанных с проблемой ..

1. Каков тайный смысл заключения вызовов GetModuleHandle и LoadLibrary в блок try..exept, если эти вызовы (равно как и лбые иные Win32API-вызовы) не возбуждают никаких исключений ? тем более - дельфийских ?

2. Каков тайный экспортировать ф-цию, если есть интерфейс ?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.039 c
14-1116820938
Alex Konshin
2005-05-23 08:02
2005.06.29
ICQ клиент


4-1114757945
Merlot
2005-04-29 10:59
2005.06.29
Как отловить выключение windows.


6-1111756038
hexen
2005-03-25 16:07
2005.06.29
Как заполнить поля открытой формы WB


3-1116491433
MEV
2005-05-19 12:30
2005.06.29
ADOCommand & скрипт


14-1117216020
Человек
2005-05-27 21:47
2005.06.29
Авария в Сергиевом Посаде?




   Наверх