首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

自定义事件传的参数出现乱码解决办法

2012-10-19 
自定义事件传的参数出现乱码Delphi(Pascal) codeunit Unit1interfaceusesWindows, Messages, SysUtils, V

自定义事件传的参数出现乱码

Delphi(Pascal) code
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收不到正确的字符,不知道是什么原因.

[解决办法]
自己动手解决了
[解决办法]
探讨
TMethod(TmpEvent).Code := @ReceiveMsg;
TMethod(TmpEvent).Data := MyObject;
MyObject.GetStrProc := TmpEvent;

[解决办法]
探讨

已解决,代码改成:
Delphi(Pascal) code
procedure ReceiveMsg1(Address:Integer;const S: string);
begin
ShowMessage(s); //此处得到的正确的值
end;

如果有参数,第一个参数必须是Data.

热点排行