По пытался использовать вашу библтотеку и наткнулся на ошибку (исходник на билделе);
HINSTANCE LibHandle;
typedef HRESULT (__import * BType(HWND hParent, LPCTSTR lpszBaseDir));
BType* ProcAdd=NULL;
typedef HRESULT (__import *CType());
CType* ProcAdd1=NULL;
typedef HRESULT (__import * DType(LPCTSTR lpszXmlFn, UINT *pnError, UINT *pnWarning));
DType* ProcAdd2=NULL;
typedef int (__import *EType (LPCTSTR lpszXmlFileName,LPCTSTR lpszLogFileName,int nLogFileNameLen,BOOL bFullPath ));
EType* ProcAdd3=NULL;
//--загружаем dll и получаем указатели на функции
LibHandle = LoadLibrary("C:\\Program Files\\CheckXML\\CPSNXML.dll");
if (LibHandle)
{
ProcAdd = (BType*) GetProcAddress(LibHandle, "cpsnInitLib");
ProcAdd1= (CType*) GetProcAddress(LibHandle, "cpsnFreeLib");
ProcAdd2= (DType*) GetProcAddress(LibHandle, "cpsnValidate");
ProcAdd3= (EType*) GetProcAddress(LibHandle, "cpsnGetLogFileName");
ShowMessage("LOad");
}
else ShowMessage("UPLoad");
//-----инициализации библиотеки
if (ProcAdd)
{
ShowMessage("Загруз");
ProcAdd(Form1->Canvas->Handle,"C:\\Program Files\\CheckXML");
}
else ShowMessage("Не загруз");
//-------проверка файла----
if (ProcAdd2)
{
ShowMessage("Загруз");
unsigned int *i=0;
unsigned int *g=0;
LPCTSTR q="D:\\2\\1\\PFR-700-Y-2006-ORG-034-017-000002-DCK-11047-DPT-000000-DCK-00000.XML";
ProcAdd2(q,i,g);
}
else ShowMessage("Не загруз");
}
на FormDestroy
if (ProcAdd1)
{
ProcAdd1();
}
while(FreeLibrary(LibHandle));
}
так вроде все работает но при "проверка файла" как только доходит до конца вываливает Acces violation at addres 100386a4 in module "CPSNXML". Write of address 00000000. При этом в папке LOG файл журнала появляется.
Не подскажите?
И нет ли описание вот этих функции?
cpsnChkPFRFileName
cpsnFreeLib
cpsnGetVerValue
cpsnMakeXSLT
cpsnSetDebugParam
За ранее благодарен.
HINSTANCE LibHandle;
typedef HRESULT (__import * BType(HWND hParent, LPCTSTR lpszBaseDir));
BType* ProcAdd=NULL;
typedef HRESULT (__import *CType());
CType* ProcAdd1=NULL;
typedef HRESULT (__import * DType(LPCTSTR lpszXmlFn, UINT *pnError, UINT *pnWarning));
DType* ProcAdd2=NULL;
typedef int (__import *EType (LPCTSTR lpszXmlFileName,LPCTSTR lpszLogFileName,int nLogFileNameLen,BOOL bFullPath ));
EType* ProcAdd3=NULL;
//--загружаем dll и получаем указатели на функции
LibHandle = LoadLibrary("C:\\Program Files\\CheckXML\\CPSNXML.dll");
if (LibHandle)
{
ProcAdd = (BType*) GetProcAddress(LibHandle, "cpsnInitLib");
ProcAdd1= (CType*) GetProcAddress(LibHandle, "cpsnFreeLib");
ProcAdd2= (DType*) GetProcAddress(LibHandle, "cpsnValidate");
ProcAdd3= (EType*) GetProcAddress(LibHandle, "cpsnGetLogFileName");
ShowMessage("LOad");
}
else ShowMessage("UPLoad");
//-----инициализации библиотеки
if (ProcAdd)
{
ShowMessage("Загруз");
ProcAdd(Form1->Canvas->Handle,"C:\\Program Files\\CheckXML");
}
else ShowMessage("Не загруз");
//-------проверка файла----
if (ProcAdd2)
{
ShowMessage("Загруз");
unsigned int *i=0;
unsigned int *g=0;
LPCTSTR q="D:\\2\\1\\PFR-700-Y-2006-ORG-034-017-000002-DCK-11047-DPT-000000-DCK-00000.XML";
ProcAdd2(q,i,g);
}
else ShowMessage("Не загруз");
}
на FormDestroy
if (ProcAdd1)
{
ProcAdd1();
}
while(FreeLibrary(LibHandle));
}
так вроде все работает но при "проверка файла" как только доходит до конца вываливает Acces violation at addres 100386a4 in module "CPSNXML". Write of address 00000000. При этом в папке LOG файл журнала появляется.
Не подскажите?
И нет ли описание вот этих функции?
cpsnChkPFRFileName
cpsnFreeLib
cpsnGetVerValue
cpsnMakeXSLT
cpsnSetDebugParam
За ранее благодарен.
Комментарий