自己编写的ActiveX控件出了点问题,请指教~!

risingsoft 2006-07-13 05:34:23
自己编写的ActiveX控件出了点问题,请指教~!:

其他公司提供的DLL,里面有一读卡函数
原型:
int ReadCard(int ReadType=9, int RecordId=1, char* DataBuffer);

我在Delphi里定义为
const
DllName='DBLib2.dll';
Function ReadCard(ReadType:Integer; RecordId:Integer; DataBuffer:PChar):Integer;{stdcall;}stdcall;external DllName;

然后建立一类进行封装
TLnHisObj = class(TObject)
private
fDataBuffer: PChar;
public
constructor Create;
Function VbReadCard():Integer;
end;

constructor TLnHisObj.Create;
begin
inherited;
GetMem(fDataBuffer,1024);
end;

function TLnHisObj.VbReadCard: Integer;
begin
result := ReadCard(9, 1, fDataBuffer);
end;

然后创建一ActiveForm控件进行包装
TLnHis = class(TActiveForm, ILnHis)
procedure ActiveFormCreate(Sender: TObject);
private
FEvents: ILnHisEvents;
fLnHisObj : TLnHisObj;
procedure BeforeFree;
protected
function VbReadCard: Integer; safecall;
end;

procedure TLnHis.ActiveFormCreate(Sender: TObject);
begin
fLnHisObj := TLnHisObj.Create;
end;

procedure TLnHis.BeforeFree;
begin
fLnHisObj.free;
end;

function TLnHis.VbReadCard: Integer;
begin
Result := fLnHisObj.VbReadCard;
end

编译OCX,注册,在HTM里测试时,执行VbReadCard就报错,内存错误,看不懂哪里出错了?
把fDataBuffer改为一维固定1024长度Char数组也不行。可是我做了另一个EXE,测试TLnHisObj类的实例对象的读卡VbReadCard函数是成功的,郁闷了!!请大家指点~!!
...全文
202 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fullhappy 2006-10-14
  • 打赏
  • 举报
回复
试了下,不是。不好意思兄弟。问一下,你这边OCX封装调用这个DLL,用REGSVR32注册通过否。我现在发现有些可通过,有些就不行。还未找到真正原因。
fullhappy 2006-10-14
  • 打赏
  • 举报
回复
你的问题应该跟我的一样的,老兄,后来怎么解决的。有些WIN32 DLL在控件ACTIVEX包里调用,这个OCX就不能再注册了,你现在写了DLLNAME这种方式,估计可以注册,但真正在调用时,就会报错。我的qq: 9951853,有空聊聊。兄弟。你的多少?
risingsoft 2006-07-19
  • 打赏
  • 举报
回复
已经在system32目录下了啊。关键是调用DLL后无法返回,IE里无法获取返回值
risingsoft 2006-07-17
  • 打赏
  • 举报
回复
CSDN无人啊!
selfrich 2006-07-16
  • 打赏
  • 举报
回复
UP
risingsoft 2006-07-16
  • 打赏
  • 举报
回复
!高手在哪里? 老鸟在哪里
risingsoft 2006-07-15
  • 打赏
  • 举报
回复
没人吗?汗。。。
gyf 2006-07-14
  • 打赏
  • 举报
回复
帮你顶
risingsoft 2006-07-14
  • 打赏
  • 举报
回复
试过的,一样效果,在IE里调用就出错
softwaiter 2006-07-14
  • 打赏
  • 举报
回复
把fDataBuffer定义成fDataBuffer: array[0..1024] of char试试
risingsoft 2006-07-14
  • 打赏
  • 举报
回复
人呢???

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧