起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 157|回复: 7

【结】指针问题

[复制链接]
发表于 2009-12-17 11:58:16 | 显示全部楼层 |阅读模式
在网上找了一个控件,里面有一个事件是这样定义的
TReceiveDataEvent = procedure(Sender: TObject; Buffer: Pointer;
                                  BufferLength: Word) of object;
把控件放到平台后,调用这个事件就变成了procedure TYJ.Comm1ReceiveData(Sender: TObject; Buffer: TObject; BufferLength: Word);   
第二个参数从原来的Pointer变成了TObject类型。请问在平台中,怎么取得Buffer的值?
我是这样写的,但是有错:
procedure TYJ.Comm1ReceiveData(Sender: TObject; Buffer: TObject; BufferLength: Word);
var
  str : string;
begin
  str := ObjectHelper.ToString(Buffer);
   dialogs.ShowMessage(str);
end;
回复

使用道具 举报

 楼主| 发表于 2009-12-17 12:01:05 | 显示全部楼层
我用这个控件的其它方法都可以,就这个事件不会用。
回复 支持 反对

使用道具 举报

发表于 2009-12-17 13:14:47 | 显示全部楼层
Business 平台目前不支持指针类型变量。Business 平台编译是严格按照.net中间语言的规范来做的,和C#、java一样,已经没有指针和结构体了,直接写一个类来代替。

例如:直接定义一个类

TNav = class(object)
  A: string;
  B: Integer;
  C: string;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-17 14:15:00 | 显示全部楼层
不是很明白你的意思。
1、我想知道,这个控件的事件还可以用吗?
2、第二个参数是串口外接设备(电子天平)传过来的值,要怎么样才能接收这个值呢?是否用你上面说的,定义一个类来代替,怎么来代替呢?
回复 支持 反对

使用道具 举报

发表于 2009-12-17 14:24:47 | 显示全部楼层
2楼的意思是,平台中不支持指针,那么可以通过传入一个class的方式。
指针的对应值你转换到class中的响应属性中,然后传入此class就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-17 14:50:50 | 显示全部楼层
指针的对应值你转换到class中的响应属性中

是不是说要去改控件的源代码,把指针对应的值,转到class中,然后,我在平台上,就接收class的值就可以了?
回复 支持 反对

使用道具 举报

发表于 2009-12-17 14:53:10 | 显示全部楼层
对。
就相当于是本来传指针的,改成通过传class的方式。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-17 15:00:44 | 显示全部楼层
哦,可以结帖了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-13 05:32 , Processed in 0.049767 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表