000 -- filename:Swap.adb
001 with Ada.Integer_Text_IOuse Ada.Integer_Text_IO
002 procedure Swap is
003 generic
004type Element_Type is private
005procedure Generic_Swap(Left, Right : in out Element_Type)
006procedure Generic_Swap(Left,Right:in out Element_Type) is
007Temporary : Element_Type
008begin
009Temporary := Left
010Left := Right
012Right := Temporary
013end Generic_Swap
014 procedure Swap is new Generic_Swap(Integer)
015A, B : Integer
016 begin
017A := 5
018B := 7
019Swap(A, B)
020 end Swap
[003]-[004] 声明一个类属数据类型 Element_Type,[005]声明一个类属子程序 Generic_Swap,它的参数是类属类型(generic type),[006]-[013] 是 Generic_Swap 函数的具体实现。但这些还不够,Element_Type 并不是什么整型、浮点型等具体数据类型,只是抽象意义上的类属类型,为形式参数。因此还需要[014] 创建实际的子程序 Swap,这里的 Integer就是一个实际参数,表示 Swap 能接受 Integer 类型的参数,这个步骤称之为实例化。当然为了可以交换浮点等其它数据类型,也可以再添加:
procedure Swap is new Generic_Swap(Float)
procedure Long_Swap is new Generic_Swap(Elementary =>Long_Integer)
...
基于类属子程序的实际程序的数目从理论上讲没有限制。重名的子程序在使用时由编译器自动区分。从这个例子,大家应该明白了类属单元的好处--实际应用中省了很多重复的工作。
类不是这样用的类要先声明变量
新建一个变量(变量1)为这个类,就像声明某个变量为整数型,文本型一样。类的名称是你所谓的子程序的上一级,然后
变量1.你所谓的子程序()
我晕手机打字真慢
模块里面基本是这些:
子程序 (直接调用,有些有参数请注意加入)
类 (也就是自定义数据,在窗口程序集里面插入变量,依次输入名字和自定义类型)
支持库 (直接安装)
常量 (#常量 可直接使用)
资源 (#资源 可直接使用)
DLL (在DLL里面直接插入就可调用)
-----------------------------------------
看懂了吧?
-------------------------------------------
现在外挂制作的主流数据分析是OD+CE+CALL+HOOK
封包早就已经淘汰。。。。。
-------------------------------------
回答完毕
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)