Delphi XE中泛型数组的使用范例,下面的范例简单的使用了泛型字符串数组,如用 TArray 代替 array of Word, 还可以使用 TArray 类提供的算法(就是少了点).

uses Generics.Collections, Generics.Defaults;

{测试 TArray 的 Sort 方法}
procedure TForm1.Button1Click(Sender: TObject);
var
arr: TArray<string>; //同 array of string
s: string;
begin
SetLength(arr, 5);
arr[0] := 'aaa';
arr[1] := 'AAA';
arr[2] := '111';
arr[3] := '333';
arr[4] := '222'; TArray.Sort<string>(arr);
Memo1.Clear;
for s in arr do Memo1.Lines.Add(s); //111 222 333 AAA aaa
end; {测试 TArray 的 BinarySearch 方法}
procedure TForm1.Button2Click(Sender: TObject);
var
arr: TArray<Integer>; //同 array of Integer
i,n: Integer;
begin
SetLength(arr, 5);
for i := 0 to Length(arr) - 1 do arr[i] := Integer(Sqr(i));
Memo1.Clear;
for i := Low(arr) to High(arr) do Memo1.Lines.Add(IntToStr(arr[i])); if TArray.BinarySearch<Integer>(arr, 4, n) then ShowMessage(IntToStr(n)); //2, 也就是第三个 if TArray.BinarySearch<Integer>(arr, 5, n) then ShowMessage(IntToStr(n)); //找不到时, 不能根据 n 的值判断
end; {自定义排序器}
procedure TForm1.Button3Click(Sender: TObject);
var
arr: TArray<Integer>;
num: Integer;
begin
SetLength(arr, 5);
arr[0] := 2;
arr[1] := 4;
arr[2] := 3;
arr[3] := 1;
arr[4] := 5; TArray.Sort<Integer>(arr, TComparer<Integer>.Construct(
function (const a,b: Integer): Integer
begin
Result := b - a;
end
));
Memo1.Clear;
for num in arr do Memo1.Lines.Add(IntToStr(num)); //5 4 3 2 1
end;
//该代码片段来自于: http://www.sharejs.com/codes/delphi/9000

[转]:Delphi XE中泛型数组的使用范例的更多相关文章

  1. Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)

    Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...

  2. Java中泛型数组创建总结

    在java中,可以声明一个泛型数组,不能通过直接通过T[] tarr=new T[10]的方式来创建数组,最简单的方式便是通过Array.newInstance(Classtype,int size) ...

  3. Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决

    Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...

  4. Delphi Xe 中如何把日期格式统一处理,玩转 TDatetime

    日期格式的处理总是会很复杂,因为不同的环境日 期格式也不一样.为了程序统一处理,  最好把格式给统一了: 可以在程序的初始化段: FormatSettings.ShortDateFormat := ' ...

  5. Java中泛型数组的使用

    package com.srie.testjava; import java.util.ArrayList; import java.util.List; public class TestClass ...

  6. Delphi XE中String、ANSIString、TBytes之间的转换

    一.string转为ansistring1.直接赋值 (有警告)2.ansistring()类型强制转换.(无警告) 二.ansistring 转为string 1.直接赋值 (有警告)2.strin ...

  7. delphi xe 正则表达式

    Delphi XE 中自带了正则表达式的处理类TRegEx,包含在单元 RegularExpressions,使用时要uses 一下.      TRegEx 是一个结构 ,使用时不用释放.他内部还是 ...

  8. Delphi 2010 中的泛型

    Delphi 2010 中的泛型 2010已发布很长时间了,口碑还不错,准备用它开发下一项目,但对泛型等新东西的认识还不够,就搜了一下,发现下面这篇文章,还不错,大家一起补补课吧! C++中的模板.C ...

  9. ActionScript3.0(AS3)中的泛型数组Vector

    Adobe官方并没有"泛型数组"的叫法,这是我自己对Vector的叫法(有点标题党),不过Vector在使用上确实跟c#中的泛型数组有些相似之处. 原作者:菩提树下的杨过出处:ht ...

随机推荐

  1. JVM之基本结构

    1. Java虚拟机的架构 1.1 Java的NIO库允许Java程序使用直接内存,访问直接内存的速度优于Java堆.出于性能的考虑,读写频繁的场合会考虑使用直接内存. 1.2 本地方法栈和Java栈 ...

  2. linux 学习笔记 防火墙设置

    1> 重新设置启动防火墙命令 #service iptables restart 2>添加防火墙规则命令 2.1 #service iptables stop 停止防火墙 2.2 #vi ...

  3. SpringBoot使用Mybatis-PageHelper

    前言 之前一篇文章介绍了<SpringBoot+Mybatis+MySql学习>的整合,这一片扩展一下Mybatis的分页插件-Mybatis-PageHelper. 新建项目 首先,po ...

  4. Alpha(6/10)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  5. AGC 014E.Blue and Red Tree(思路 启发式合并)

    题目链接 \(Description\) 给定两棵\(n\)个点的树,分别是由\(n-1\)条蓝边和\(n-1\)条红边组成的树.求\(n-1\)次操作后,能否把蓝树变成红树. 每次操作是,选择当前树 ...

  6. BZOJ.3504.[CQOI2014]危桥(最大流ISAP)

    BZOJ 洛谷 这种题大多是多源多汇跑网络流.往返\(a_n/b_n\)次可以看做去\(a_n/b_n\)次,直接把危桥能走的次数看做\(1\). 先不考虑别的,直接按原图建模:危桥建双向边容量为\( ...

  7. OI考试需注意的

    能用结构体就用结构体,特别是队列之类的数据结构:类别相同的变量或数组名字不要太相近,最好在名字后面加上标识符(e.g:hash[]&HASH[]就不好,hash1[]&hash2[]正 ...

  8. HTML使用的几个小知识点

    本文主要分享几个网页前端的几个基础知识点,用于零碎的html知识学习,同时也是在实践中的一些心得.最后给出了几个小例子. 1. 网页编程初识 掌握基本的html标签以及CSS语法 学会查看网页的源代码 ...

  9. Linux搭建 SVN 服务器

    安装 Subversion Subversion 是一个版本控制系统,相对于的 RCS . CVS ,采用了分支管理系统,它的设计目标就是取代 CVS . yum install -y subvers ...

  10. go defer笔记

    1.函数中return xxx非原子指令 2.函数返回过程:先给返回值赋值:再调用defer:最后回到调用函数中 即:返回值 = xxx; defer; return; 3.多个defer调用顺序类似 ...