函数中有个参数是过程类,如GetPackageInfo(..InfoProc: TPackageInfoProc);//TPackageInfoProc是个过程

  • 主题发起人 主题发起人 gondsoft
  • 开始时间 开始时间
G

gondsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
函数中有个参数是过程类,如GetPackageInfo(..InfoProc: TPackageInfoProc);//TPackageInfoProc是个过程,这怎么弄? (100分)<br />完整如下:
type
TPackageInfoProc = procedure (const Name: string; NameType: TNameType; Flags: Byte; Param: Pointer);

procedure GetPackageInfo(Module: HMODULE; Param: Pointer; var Flags: Integer; InfoProc: TPackageInfoProc);
现在我要用GetPackageInfo函数,怎么才能正确传入InfoProc这个参数呢?

我在TForm里这样定义了,
private
procedure PackageInfo(const Name: string; NameType: TNameType;
Flags: Byte; Param: Pointer);

begin
GetPackageInfo(PkgHandle,nil,AFlag,@PackageInfo);//编译通不过
end;

请教高手相教啊!
 
把你的PackageInfo放到类(TForm)外面去或者
TPackageInfoProc = procedure (const Name: string; NameType: TNameType; Flags: Byte; Param: Pointer);
改为
TPackageInfoProc = procedure (const Name: string; NameType: TNameType; Flags: Byte; Param: Pointer) of object;
 
&gt;&gt;三七二十一
以下代码是DELPHI里定义的啊。

type
TPackageInfoProc = procedure (const Name: string; NameType: TNameType; Flags: Byte; Param: Pointer);

procedure GetPackageInfo(Module: HMODULE; Param: Pointer; var Flags: Integer; InfoProc: TPackageInfoProc);
 
搞定了。
下面的定义是在SysUtils单元,
type
TPackageInfoProc = procedure (const Name: string; NameType: TNameType; Flags: Byte; Param: Pointer);

procedure GetPackageInfo(Module: HMODULE; Param: Pointer; var Flags: Integer; InfoProc: TPackageInfoProc);

正确应用:
type
form1=class(TForm)
procedure FormCreate(Sender: TObject);
end;

var
Form1: TForm1;
procedure PackageInfo(const Name: string; NameType: TNameType;
Flags: Byte; Param: Pointer);

implementation

{$R *.dfm}
procedure PackageInfo(const Name: string; NameType: TNameType;
Flags: Byte; Param: Pointer);
begin

end;

procedure TForm1.FormCreate(Sender: TObject);
var
AFlag:Integer;
begin
GetPackageInfo(0,nil,AFlag,PackageInfo);
end;

谢谢'三七二十一'的提醒,这分就全给你了。
 
后退
顶部