type TDeliver = procedure(deliver: DeliverStr);是什么意思(静态加载dll函数时用到) ( 积分: 100 )

  • 主题发起人 主题发起人 weismart
  • 开始时间 开始时间
W

weismart

Unregistered / Unconfirmed
GUEST, unregistred user!
在单元aunit中定义
type
DeliverStr = packed record
sequencenumber1: LongInt;
sequencenumber2: LongInt;
sequencenumber3: LongInt;
usernumber: packed array[0..21] of char;
spnumber: packed array[0..21] of char;
tp_pid: char;
tp_udhi: char;
messagecoding: char;
messagelength: integer;
messagecontent: packed array[0..159] of char;
end;
在主单元中引用aunit并定义
type TDeliver = procedure(deliver: DeliverStr);
然后在静态调用的dll函数中把Tdeliver当成一个函数参数。
请问一般在动态加载时才用 type TDeliver = procedure(deliver: DeliverStr);
为什么静态加载也这么做,另外, 不太明白type TDeliver = procedure(deliver: DeliverStr);这一句。请高手指点。

 
在单元aunit中定义
type
DeliverStr = packed record
sequencenumber1: LongInt;
sequencenumber2: LongInt;
sequencenumber3: LongInt;
usernumber: packed array[0..21] of char;
spnumber: packed array[0..21] of char;
tp_pid: char;
tp_udhi: char;
messagecoding: char;
messagelength: integer;
messagecontent: packed array[0..159] of char;
end;
在主单元中引用aunit并定义
type TDeliver = procedure(deliver: DeliverStr);
然后在静态调用的dll函数中把Tdeliver当成一个函数参数。
请问一般在动态加载时才用 type TDeliver = procedure(deliver: DeliverStr);
为什么静态加载也这么做,另外, 不太明白type TDeliver = procedure(deliver: DeliverStr);这一句。请高手指点。

 
把函数或过程声明为类型,并非静态调用可以不申请,动态调用dll就有申请。而是只有用到函数或过程的变量就要声明这种变量的类型。
 
type TDeliver = procedure(deliver: DeliverStr);
就是把过程声明为类型,在控件开发里经常用到。比如当你想给控件加个Event,可以这样,OneAddEvent: TDeliver
 
type TDeliver = procedure(deliver: DeliverStr);
中deliverstr是一个类型。把类开型当成过程,不太明白。而且这种做法只是在静态加载动态链接库中的函数时才用的。为什么源程序中采用静态加载动态链库还这么使用。注意,在定义type TDeliver = procedure(deliver: DeliverStr);后,调用动态库函数,并把TDeliver做为库函数的参数这方法一般只在静态加载动态链接库函数中才使用。以上二位的回答我还是不明白。另,烦请各位少打点错别字,看起来更不明不白的。呵。。。。别介意我这么多哦。
 
type TDeliver = procedure(deliver: DeliverStr);声明一个函数指针类型
1.用在动态加载DLL
2.用在回调
3.想不起来了
没有太明白你的问题,看起来好像是 回调 ?
 
同意zjan521的观点。应该是定义一个回调函数,类同定义一个事件的方法
 
[blue]type TDeliver = procedure(deliver: DeliverStr);
这是一个事件类型定义语句。
其含义是指TDeliver是一个参数为(deliver: DeliverStr)的过程类型[/blue]
 
type TDeliver = procedure(deliver: DeliverStr) of object 才是回调 。
 
后退
顶部