unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TMyClass = class
private
FGetStrProc:TGetStrProc;
public
property GetStrProc:TGetStrProc read FGetStrProc write FGetStrProc;
procedure OnGetStrProc;
end; TForm1 = class(TForm)
btn1: TButton;
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
MyObject:TMyClass;implementation{$R *.dfm}{ TMyClass }procedure TMyClass.OnGetStrProc;
begin
if Assigned(FGetStrProc) then FGetStrProc('Hello, World');
end;procedure ReceiveMsg(const S: string);
begin
ShowMessage(s); //此处得到的是乱码
end;procedure TForm1.FormCreate(Sender: TObject);
var
TmpEvent:TGetStrProc;
begin
MyObject := TMyClass.Create;
TMethod(TmpEvent).Code := @ReceiveMsg;
TMethod(TmpEvent).Data := MyObject;
MyObject.GetStrProc := TmpEvent;
end;procedure TForm1.btn1Click(Sender: TObject);
begin
MyObject.OnGetStrProc;
end;end.
ReceiveMsg收不到正确的字符,不知道是什么原因.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TMyClass = class
private
FGetStrProc:TGetStrProc;
public
property GetStrProc:TGetStrProc read FGetStrProc write FGetStrProc;
procedure OnGetStrProc;
end; TForm1 = class(TForm)
btn1: TButton;
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
MyObject:TMyClass;implementation{$R *.dfm}{ TMyClass }procedure TMyClass.OnGetStrProc;
begin
if Assigned(FGetStrProc) then FGetStrProc('Hello, World');
end;procedure ReceiveMsg(const S: string);
begin
ShowMessage(s); //此处得到的是乱码
end;procedure TForm1.FormCreate(Sender: TObject);
var
TmpEvent:TGetStrProc;
begin
MyObject := TMyClass.Create;
TMethod(TmpEvent).Code := @ReceiveMsg;
TMethod(TmpEvent).Data := MyObject;
MyObject.GetStrProc := TmpEvent;
end;procedure TForm1.btn1Click(Sender: TObject);
begin
MyObject.OnGetStrProc;
end;end.
ReceiveMsg收不到正确的字符,不知道是什么原因.
解决方案 »
- Delphi7不能入进调试,为什么?
- DELPHI编程实现MYSQL的基本操作如何实现
- 内容打印不全的问题
- ehlib 的 DBGridEh 最后一行汇总栏如何出现,就是找不到,demo内找了很久
- 请教关于校友录伴侣实现的原理
- 关于屏幕保护程序中键盘和鼠标的响应
- 在D6中存储图像的问题
- 怎么选网络上的计算机?
- 哪里Delphi6的控件比较多阿!我想下载一些!
- zswang(伴水)(需要充充电)帮我再看看好吗?http://www.csdn.net/Expert/topic/483/483240.shtm
- 如何在xx.TXT文件中查找指定的字符串并返回需要的内容?
- ReadFile 总返回失败错误代码1784
procedure ReceiveMsg1(Address:Integer;const S: string);
begin
ShowMessage(s); //此处得到的正确的值
end;
如果有参数,第一个参数必须是Data.
TMethod(TmpEvent).Code := @ReceiveMsg;
TMethod(TmpEvent).Data := MyObject;
有最后一句就足够了
这个恐怕不行,事件发生后,ReceiveMsg不会被调用。