zoukankan      html  css  js  c++  java
  • 一、Delphi 2009 中的泛型

    代码文件:

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TForm1 
    = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;
        
    procedure Button1Click(Sender: TObject);
        
    procedure Button2Click(Sender: TObject);
        
    procedure Button3Click(Sender: TObject);
        
    procedure Button4Click(Sender: TObject);
        
    procedure Button5Click(Sender: TObject);
      
    end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    type
      TArr
    <T> = array[0..9of T; {定义一个泛型数组}
      
    {虽然大家习惯用 T 来泛指其他类型, 但使用其他合法的标识符也是可以的}

    {用作 Integer}
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Arr: TArr
    <Integer>;
      i: Integer;
    begin
      
    for i := Low(Arr) to High(Arr) do
        Arr[i] :
    = i * i;

      Memo1.Clear;
      
    for i := Low(Arr) to High(Arr) do
        Memo1.Lines.Add(Format(
    'Arr[%d] = %d', [i, Arr[i]]));
    end;

    {用作 string}
    procedure TForm1.Button2Click(Sender: TObject);
    var
      Arr: TArr
    <string>;
      i: Integer;
    begin
      
    for i := Low(Arr) to High(Arr) do
        Arr[i] :
    = StringOfChar(Char(i+97), 3);

      Memo1.Clear;
      
    for i := Low(Arr) to High(Arr) do
        Memo1.Lines.Add(Format(
    'Arr[%d] = %s', [i, Arr[i]]));
    end;

    {用作 Single}
    procedure TForm1.Button3Click(Sender: TObject);
    var
      Arr: TArr
    <Single>;
      i: Integer;
    begin
      
    for i := Low(Arr) to High(Arr) do
        Arr[i] :
    = 100 / (i+1);

      Memo1.Clear;
      
    for i := Low(Arr) to High(Arr) do
        Memo1.Lines.Add(Format(
    'Arr[%d] = %f', [i, Arr[i]]));
    end;

    {用作记录 TPoint}
    procedure TForm1.Button4Click(Sender: TObject);
    var
      Arr: TArr
    <TPoint>;
      i: Integer;
    begin
      
    for i := Low(Arr) to High(Arr) do
        Arr[i] :
    = Point(i, i*2);

      Memo1.Clear;
      
    for i := Low(Arr) to High(Arr) do
        Memo1.Lines.Add(Format(
    'Arr[%d] = (%d,%d)', [i, Arr[i].X, Arr[i].Y]));
    end;

    {用作类 TButton}
    procedure TForm1.Button5Click(Sender: TObject);
    var
      Arr: TArr
    <TButton>;
      i: Integer;
    begin
      
    for i := Low(Arr) to High(Arr) do
      
    begin
        Arr[i] :
    = TButton.Create(Self);
        Arr[i].Name :
    = Concat('Btn', IntToStr(i+1));
      
    end;

      Memo1.Clear;
      
    for i := Low(Arr) to High(Arr) do
        Memo1.Lines.Add(Format(
    'Arr[%d] is %s', [i, Arr[i].Name]));

      
    for i := Low(Arr) to High(Arr) do Arr[i].Free;
    end;

    end.

    窗体文件:

    object Form1: TForm1
      Left 
    = 0
      Top 
    = 0
      Caption 
    = 'Form1'
      ClientHeight 
    = 158
      ClientWidth 
    = 232
      Color 
    = clBtnFace
      Font.Charset 
    = DEFAULT_CHARSET
      Font.Color 
    = clWindowText
      Font.Height 
    = -11
      Font.Name 
    = 'Tahoma'
      Font.Style 
    = []
      OldCreateOrder 
    = False
      PixelsPerInch 
    = 96
      TextHeight 
    = 13
      
    object Button1: TButton
        Left 
    = 136
        Top 
    = 6
        Width 
    = 75
        Height 
    = 25
        Caption 
    = 'Button1'
        TabOrder 
    = 0
        OnClick 
    = Button1Click
      
    end
      
    object Memo1: TMemo
        Left 
    = 0
        Top 
    = 0
        Width 
    = 113
        Height 
    = 158
        Align 
    = alLeft
        Lines.Strings 
    = (
          
    'Memo1')
        ScrollBars 
    = ssVertical
        TabOrder 
    = 1
        ExplicitHeight 
    = 167
      
    end
      
    object Button2: TButton
        Left 
    = 136
        Top 
    = 36
        Width 
    = 75
        Height 
    = 25
        Caption 
    = 'Button2'
        TabOrder 
    = 2
        OnClick 
    = Button2Click
      
    end
      
    object Button3: TButton
        Left 
    = 136
        Top 
    = 66
        Width 
    = 75
        Height 
    = 25
        Caption 
    = 'Button3'
        TabOrder 
    = 3
        OnClick 
    = Button3Click
      
    end
      
    object Button4: TButton
        Left 
    = 136
        Top 
    = 96
        Width 
    = 75
        Height 
    = 25
        Caption 
    = 'Button4'
        TabOrder 
    = 4
        OnClick 
    = Button4Click
      
    end
      
    object Button5: TButton
        Left 
    = 136
        Top 
    = 126
        Width 
    = 75
        Height 
    = 25
        Caption 
    = 'Button5'
        TabOrder 
    = 5
        OnClick 
    = Button5Click
      
    end
    end
  • 相关阅读:
    网络协议笔记-网络层-划分子网、IP数据报的分组转发
    网络协议笔记-网络层-ARP协议
    网络协议笔记-网络层-路由器的作用、IP地址
    postfix找不到libmysqlclient.so.18
    mysql为datetime类型的字段设置默认值current_timestamp,引发 Invalid default value for 错误
    网络协议笔记-数据链路层
    网络协议笔记-物理层
    [转]numpy中数据合并,stack ,concentrate,vstack,hstack
    【转】python中numpy模块下的np.clip()的用法
    推荐:python科学计算pandas/python画图库matplotlib【转】
  • 原文地址:https://www.cnblogs.com/jxgxy/p/1595046.html
Copyright © 2011-2022 走看看