有个程序 运行大概五天左右的时间
就报Access violation at address 00D24081 in module 'borlndmm.dll'. Write of address 033F00E8
数据库查询是用dll写的
访问数据库时是用的同一个连接
也就是说会出现多个线程同时依靠这个连接进行查询数据 不知道是不是这个原因导致以上错误
有没有什么解决的办法
就报Access violation at address 00D24081 in module 'borlndmm.dll'. Write of address 033F00E8
数据库查询是用dll写的
访问数据库时是用的同一个连接
也就是说会出现多个线程同时依靠这个连接进行查询数据 不知道是不是这个原因导致以上错误
有没有什么解决的办法
begin
Result := QueryDB_Ado(FDBHandle, PChar(SqlStr), FAdoQuery, FErrStr);
if not Result then
SetConnected(False);
end;
调用以上函数时报错 access violation dll定义:Function QueryDB_Ado( P_Handle :Integer;
P_SQLStr :PChar;
Var P_AdoQuery1:TAdoQuery;
P_ErrScript:PChar):Boolean; stdcall; external 'DBAccessDll.dll';
至于dll内部代码是什么 不清楚
不明白的是为什么运行5,6天后才报错呢
P_ErrScript:PChar // 这个嗯,怎么说FErrStr 你的定义是什么? Pchar?
如果是 Pchar 那你有没分配内存?应该分配多少内存?dll 作得不好哈, 那你只要分配个几K让他够了估计这个 dll 调用次数很少, 要不然, 100 次以内应该就会出错
它的定义是
FErrStr: array[0..255] of Char;
一个数组 不用分配内存吧