delphi调用ocx中方法传值的问题
本来不会delphi的,但是工作需要,现在需要用delphi写一个程序,从oracle数据库中取一个clob字段,然后调用某ocx控件中的方法,
ocx中函数原型是
long Verify(short * storedata, long length)
在delphi中引入控件后,调用的函数为
Integer Verify(var stroedata:Smallint, length:Integer)
从数据库中取出的clob我定义了一个String保存
var zw : String
zw := ADOQuery1.FieldByName('zw').AsString;
stroedata应该是zw的地址吧
但是现在我怎么可以把zw搞成Smallint类型的地址传进去
可以帮帮我吗 谢谢了
[解决办法]
var zw : Integer;
zw := StrToInt(ADOQuery1.FieldByName('zw').AsString);
这样就行了,不过
Smallint是16进制有符号整数
Integer是32进制有符号整数
看你需要使用吧
[解决办法]
二进制字段 AsString可能会丢失数据,最好是SaveToStream保存到内存流中,
还有一个Blob字段不大可能保存一个SmallInt的数据(才2字节呀),因此我想OCX中应该是要求传递这个数据的首地址,如果推测没错,那么就
var MS : TMemoryStream;begin MS := TMemoryStream.Create; TBlobField(ADOQuery1.FieldByName('zw')).SaveToStream(MS); Verify(PSmallint(MS.Memory)^ , MS.Size); MS.Free;//这里不确定是否该释放,因为不知道OCX中是否复制了数据过去, //如果复制了可以释放,否则结束时再释放end;