-------------Delphi7没有泛型
开发环境是Delphi XE (是XE,不是XE2,不是XE10)
-------------------
--------------Unit 开始-
1 unit Unit1; 2 3 interface 4 5 uses 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 Dialogs, StdCtrls, ExtCtrls, TypInfo; //,Generics.Collections 8 9 type 10 TForm1 = class(TForm) 11 Button1: TButton; 12 Button2: TButton; 13 Button3: TButton; 14 Bevel1: TBevel; 15 Button4: TButton; 16 Button5: TButton; 17 procedure Button1Click(Sender: TObject); 18 procedure Button2Click(Sender: TObject); 19 procedure Button3Click(Sender: TObject); 20 procedure Button4Click(Sender: TObject); 21 procedure Button5Click(Sender: TObject); 22 private 23 { Private declarations } 24 public 25 { Public declarations } 26 end; 27 28 Tmycalss=class 29 private 30 type 31 TMyRecord=record 32 s:string; 33 end; 34 public 35 Myr:TmyreCord; 36 end; 37 { 38 泛型:声明定义的时候看上去就是把类型当成形参一样的东西用T表示,当然也可以用其他的字符代替; 39 在使用的时候把<T> 中的T看成是实参,实参是类型 40 比如: 41 var 42 ss:TMygeneric<String> ; 43 } 44 TMygeneric<T> =array[0..9] of T ; //TMygeneric<sss> =array[0..9] of sss;这个也可以的 45 46 TmyGenericClass<T>=class(Tobject) 47 private 48 FIDCode:T; 49 public 50 end; 51 52 TmyGenericClass_A<T:Class> =class(TmyGenericClass<T>) 53 private 54 FIDCode_A:T; 55 end; 56 var 57 Form1: TForm1; 58 59 implementation 60 61 {$R *.dfm} 62 63 procedure TForm1.Button1Click(Sender: TObject); 64 var 65 ss:TMygeneric<String>; //泛型 66 i:Integer; 67 begin 68 for i:=0 to 9 do 69 begin 70 ss[i]:=IntToStr(i); 71 end; 72 end; 73 74 procedure TForm1.Button2Click(Sender: TObject); 75 var 76 Myc:Tmycalss; 77 begin 78 Myc:=Tmycalss.Create; 79 Myc.Myr.s:='8888'; 80 ShowMessage(Myc.Myr.s); //看下类中类 81 FreeAndNil(Myc); 82 end; 83 84 procedure TForm1.Button3Click(Sender: TObject); 85 var 86 MyArrayc:TMygeneric<Tmycalss>; //泛型 87 i:Integer; 88 begin 89 for i:=0 to 9 do 90 begin 91 MyArrayc[i]:=Tmycalss.Create; 92 MyArrayc[i].Myr.s:='498789'; 93 end; 94 for i:=0 to 9 do 95 begin 96 FreeAndNil(MyArrayc[i]); 97 end; 98 end; 99 100 procedure TForm1.Button4Click(Sender: TObject); 101 var 102 vClass:TmyGenericClass<String>; 103 begin 104 vClass:=TmyGenericClass<String>.Create; 105 vClass.FIDCode:='978978'; 106 ShowMessage(vClass.FIDCode ); 107 FreeAndNil(vClass); 108 end; 109 110 procedure TForm1.Button5Click(Sender: TObject); 111 var 112 vClass_A:TmyGenericClass_A<Tmycalss> ; 113 begin 114 vClass_A:=TmyGenericClass_A<Tmycalss>.Create; 115 vClass_A.FIDCode_A:=Tmycalss.Create; 116 vClass_A.FIDCode_A.Myr.s:='456465'; 117 ShowMessage(vClass_A.FIDCode_A.Myr.s); 118 FreeAndNil(vClass_A.FIDCode_A); 119 FreeAndNil(vClass_A); 120 end; 121 122 end.
-------------Unit结束-----
--------Form 开始--------
1 object Form1: TForm1 2 Left = 754 3 Top = 463 4 BorderStyle = bsDialog 5 Caption = 'Form1' 6 ClientHeight = 185 7 ClientWidth = 308 8 Color = clBtnFace 9 Font.Charset = DEFAULT_CHARSET 10 Font.Color = clWindowText 11 Font.Height = -11 12 Font.Name = 'Tahoma' 13 Font.Style = [] 14 OldCreateOrder = False 15 Position = poDesigned 16 PixelsPerInch = 96 17 TextHeight = 13 18 object Bevel1: TBevel 19 Left = 152 20 Top = 8 21 Width = 9 22 Height = 159 23 end 24 object Button1: TButton 25 Left = 48 26 Top = 24 27 Width = 75 28 Height = 25 29 Caption = 'Button1' 30 TabOrder = 0 31 OnClick = Button1Click 32 end 33 object Button2: TButton 34 Left = 48 35 Top = 72 36 Width = 75 37 Height = 25 38 Caption = 'Button2' 39 TabOrder = 1 40 OnClick = Button2Click 41 end 42 object Button3: TButton 43 Left = 48 44 Top = 119 45 Width = 75 46 Height = 25 47 Caption = 'Button3' 48 TabOrder = 2 49 OnClick = Button3Click 50 end 51 object Button4: TButton 52 Left = 192 53 Top = 24 54 Width = 75 55 Height = 25 56 Caption = 'Button4' 57 TabOrder = 3 58 OnClick = Button4Click 59 end 60 object Button5: TButton 61 Left = 192 62 Top = 64 63 Width = 75 64 Height = 25 65 Caption = 'Button5' 66 TabOrder = 4 67 OnClick = Button5Click 68 end 69 end
-------Form 结束---------