• 二、Delphi 2009 泛型容器单元(Generics.Collections)[1]: TList<T>


    Delphi 2009 新增了泛型容器单元: Generics.Collections, 同时还有一个 Generics.Defaults 单元做支持.

    Generics.Collections 包含了以下实用类:
    TList<T>
    TQueue<T>
    TStack<T>
    TDictionary<TKey,TValue>
    TObjectList<T>
    TObjectQueue<T>
    TObjectStack<T>
    TObjectDictionary<TKey,TValue>



    有了以上泛型的容器, 恐怕 Classes.TList 和 Contnrs 单元下的 TObjectList 等系列容器也就只为兼容存在了.

    Generics.Collections.TList<T> 既然是泛型的, 那肯定应该容得下字符串列表, 本例就依此测试吧.

    unit Unit1;

    interface

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

    type
      TForm1 
    = class(TForm)
        Memo1: TMemo;
        Edit1: TEdit;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;
        Button6: TButton;
        Button7: TButton;
        Button8: TButton;
        Button9: TButton;
        Button10: TButton;
        
    procedure FormCreate(Sender: TObject);
        
    procedure FormDestroy(Sender: TObject);
        
    procedure Edit1Change(Sender: TObject);
        
    procedure Button1Click(Sender: TObject);
        
    procedure Button2Click(Sender: TObject);
        
    procedure Button3Click(Sender: TObject);
        
    procedure Button4Click(Sender: TObject);
        
    procedure Button5Click(Sender: TObject);
        
    procedure Button6Click(Sender: TObject);
        
    procedure Button7Click(Sender: TObject);
        
    procedure Button8Click(Sender: TObject);
        
    procedure Button9Click(Sender: TObject);
        
    procedure Button10Click(Sender: TObject);
      
    end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    uses Generics.Collections; {Delphi 2009 新增的泛型容器单元}

    var
      List: TList
    <string>;  {定义一个泛型 TList 类, 这指定了要用于 string}
      str: 
    string = 'Test';

    {建立}
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      List :
    = TList<string>.Create;

      Memo1.Clear;
      Edit1.Text :
    = str;
      Button1.Caption :
    = Button1.Caption + ' 显示';
      Button2.Caption :
    = Button2.Caption + ' 添加';
      Button3.Caption :
    = Button3.Caption + ' 插入';
      Button4.Caption :
    = Button4.Caption + ' 删除1';
      Button5.Caption :
    = Button5.Caption + ' 删除2';
      Button6.Caption :
    = Button6.Caption + ' 查找';
      Button7.Caption :
    = Button7.Caption + ' 排序';
      Button8.Caption :
    = Button8.Caption + ' 翻转';
      Button9.Caption :
    = Button9.Caption + ' 清空';
      Button10.Caption :
    = Button10.Caption + ' 添加数组';
    end;

    {释放}
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      List.Free;
    end;

    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      
    if Edit1.Text <> '' then str := Edit1.Text;
    end;

    {显示}
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
    begin
      Memo1.Clear;
      
    for i := 0 to List.Count - 1 do
        Memo1.Lines.Add(List[i]);  
    {List[i] = List.Item[i]}
      Text :
    = Format('当前总数: %d', [List.Count]);
    end;

    {添加}
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      List.Add(str);
      Button1.Click; 
    {刷新显示}
    end;

    {插入, 譬如插入在最前面}
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      List.Insert(
    0, str);
      Button1.Click;
    end;

    {根据序号删除, 譬如删除第一个数据}
    procedure TForm1.Button4Click(Sender: TObject);
    begin
      List.RemoveAt(
    0);
      Button1.Click;
    end;

    {根据内容删除, 譬如删除第一个数据}
    procedure TForm1.Button5Click(Sender: TObject);
    var
      s: 
    string;
    begin
      s :
    = List[0];
      List.Remove(s);
      Button1.Click;
    end;

    {查找}
    procedure TForm1.Button6Click(Sender: TObject);
    var
      n: Integer;
    begin
      n :
    = List.IndexOf(str); {LastIndexOf 是从后面找; 也可用 List.Contains(str) 判断是否包含 str}
      
    if n = -1 then
        ShowMessage(
    '没找到')
      
    else
        ShowMessageFmt(
    '%s 是第 %d 个', [str, n+1]);
    end;

    {排序}
    procedure TForm1.Button7Click(Sender: TObject);
    begin
      List.Sort;
      Button1.Click;
    end;

    {翻转}
    procedure TForm1.Button8Click(Sender: TObject);
    begin
      List.Reverse;
      Button1.Click;
    end;

    {清空}
    procedure TForm1.Button9Click(Sender: TObject);
    begin
      List.Clear;
      Button1.Click;
    end;

    {添加数组}
    procedure TForm1.Button10Click(Sender: TObject);
    const
      arr: 
    array[0..2of string = ('CodeGear''Delphi''2009');
    begin
      List.Add(
    'Embarcadero');
      List.AddRange(arr);
      Button1.Click;
    end;

    end.
    object Form1: TForm1
      Left 
    = 0
      Top 
    = 0
      Caption 
    = 'Form1'
      ClientHeight 
    = 201
      ClientWidth 
    = 349
      Color 
    = clBtnFace
      Font.Charset 
    = DEFAULT_CHARSET
      Font.Color 
    = clWindowText
      Font.Height 
    = -11
      Font.Name 
    = 'Tahoma'
      Font.Style 
    = []
      OldCreateOrder 
    = False
      OnCreate 
    = FormCreate
      OnDestroy 
    = FormDestroy
      PixelsPerInch 
    = 96
      TextHeight 
    = 13
      
    object Memo1: TMemo
        Left 
    = 0
        Top 
    = 0
        Width 
    = 121
        Height 
    = 201
        Align 
    = alLeft
        Lines.Strings 
    = (
          
    'Memo1')
        ScrollBars 
    = ssBoth
        TabOrder 
    = 0
        ExplicitHeight 
    = 206
      
    end
      
    object Button1: TButton
        Left 
    = 136
        Top 
    = 13
        Width 
    = 81
        Height 
    = 25
        Caption 
    = 'Button1'
        TabOrder 
    = 1
        OnClick 
    = Button1Click
      
    end
      
    object Button2: TButton
        Left 
    = 127
        Top 
    = 44
        Width 
    = 100
        Height 
    = 25
        Caption 
    = 'Button2'
        TabOrder 
    = 2
        OnClick 
    = Button2Click
      
    end
      
    object Button3: TButton
        Left 
    = 127
        Top 
    = 75
        Width 
    = 100
        Height 
    = 25
        Caption 
    = 'Button3'
        TabOrder 
    = 3
        OnClick 
    = Button3Click
      
    end
      
    object Button4: TButton
        Left 
    = 127
        Top 
    = 106
        Width 
    = 100
        Height 
    = 25
        Caption 
    = 'Button4'
        TabOrder 
    = 4
        OnClick 
    = Button4Click
      
    end
      
    object Button5: TButton
        Left 
    = 127
        Top 
    = 137
        Width 
    = 100
        Height 
    = 25
        Caption 
    = 'Button5'
        TabOrder 
    = 5
        OnClick 
    = Button5Click
      
    end
      
    object Button6: TButton
        Left 
    = 240
        Top 
    = 44
        Width 
    = 100
        Height 
    = 25
        Caption 
    = 'Button6'
        TabOrder 
    = 6
        OnClick 
    = Button6Click
      
    end
      
    object Button7: TButton
        Left 
    = 240
        Top 
    = 75
        Width 
    = 100
        Height 
    = 25
        Caption 
    = 'Button7'
        TabOrder 
    = 7
        OnClick 
    = Button7Click
      
    end
      
    object Button8: TButton
        Left 
    = 240
        Top 
    = 106
        Width 
    = 100
        Height 
    = 25
        Caption 
    = 'Button8'
        TabOrder 
    = 8
        OnClick 
    = Button8Click
      
    end
      
    object Button9: TButton
        Left 
    = 240
        Top 
    = 137
        Width 
    = 100
        Height 
    = 25
        Caption 
    = 'Button9'
        TabOrder 
    = 9
        OnClick 
    = Button9Click
      
    end
      
    object Edit1: TEdit
        Left 
    = 240
        Top 
    = 15
        Width 
    = 100
        Height 
    = 21
        TabOrder 
    = 10
        Text 
    = 'Edit1'
        OnChange 
    = Edit1Change
      
    end
      
    object Button10: TButton
        Left 
    = 127
        Top 
    = 168
        Width 
    = 214
        Height 
    = 25
        Caption 
    = 'Button10'
        TabOrder 
    = 11
        OnClick 
    = Button10Click
      
    end
    end
  • 相关阅读:
    pamamiko的学习笔记
    pamamiko的安装
    python基本语法1.1--十进制与十六进制数之间的相互转换
    mnist深入--用卷积神经网络改善mnist
    minst数据集怎么跑
    七大常见排序算法总结(Java语言)
    ubuntu 16.03 Anaconda Tensorflow(CPU)安装
    IntelliJ Idea 2017 免费激活方法
    Ubuntu下安装deb格式的软件
    win10下配置java环境
  • 原文地址:https://www.cnblogs.com/jxgxy/p/1595096.html
Copyright © 2020-2023  润新知