[转]:Delphi XE中泛型数组的使用范例
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中泛型数组的使用范例的更多相关文章
- Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)
Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...
- Java中泛型数组创建总结
在java中,可以声明一个泛型数组,不能通过直接通过T[] tarr=new T[10]的方式来创建数组,最简单的方式便是通过Array.newInstance(Classtype,int size) ...
- Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决
Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...
- Delphi Xe 中如何把日期格式统一处理,玩转 TDatetime
日期格式的处理总是会很复杂,因为不同的环境日 期格式也不一样.为了程序统一处理, 最好把格式给统一了: 可以在程序的初始化段: FormatSettings.ShortDateFormat := ' ...
- Java中泛型数组的使用
package com.srie.testjava; import java.util.ArrayList; import java.util.List; public class TestClass ...
- Delphi XE中String、ANSIString、TBytes之间的转换
一.string转为ansistring1.直接赋值 (有警告)2.ansistring()类型强制转换.(无警告) 二.ansistring 转为string 1.直接赋值 (有警告)2.strin ...
- delphi xe 正则表达式
Delphi XE 中自带了正则表达式的处理类TRegEx,包含在单元 RegularExpressions,使用时要uses 一下. TRegEx 是一个结构 ,使用时不用释放.他内部还是 ...
- Delphi 2010 中的泛型
Delphi 2010 中的泛型 2010已发布很长时间了,口碑还不错,准备用它开发下一项目,但对泛型等新东西的认识还不够,就搜了一下,发现下面这篇文章,还不错,大家一起补补课吧! C++中的模板.C ...
- ActionScript3.0(AS3)中的泛型数组Vector
Adobe官方并没有"泛型数组"的叫法,这是我自己对Vector的叫法(有点标题党),不过Vector在使用上确实跟c#中的泛型数组有些相似之处. 原作者:菩提树下的杨过出处:ht ...
随机推荐
- JVM之基本结构
1. Java虚拟机的架构 1.1 Java的NIO库允许Java程序使用直接内存,访问直接内存的速度优于Java堆.出于性能的考虑,读写频繁的场合会考虑使用直接内存. 1.2 本地方法栈和Java栈 ...
- linux 学习笔记 防火墙设置
1> 重新设置启动防火墙命令 #service iptables restart 2>添加防火墙规则命令 2.1 #service iptables stop 停止防火墙 2.2 #vi ...
- SpringBoot使用Mybatis-PageHelper
前言 之前一篇文章介绍了<SpringBoot+Mybatis+MySql学习>的整合,这一片扩展一下Mybatis的分页插件-Mybatis-PageHelper. 新建项目 首先,po ...
- Alpha(6/10)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...
- AGC 014E.Blue and Red Tree(思路 启发式合并)
题目链接 \(Description\) 给定两棵\(n\)个点的树,分别是由\(n-1\)条蓝边和\(n-1\)条红边组成的树.求\(n-1\)次操作后,能否把蓝树变成红树. 每次操作是,选择当前树 ...
- BZOJ.3504.[CQOI2014]危桥(最大流ISAP)
BZOJ 洛谷 这种题大多是多源多汇跑网络流.往返\(a_n/b_n\)次可以看做去\(a_n/b_n\)次,直接把危桥能走的次数看做\(1\). 先不考虑别的,直接按原图建模:危桥建双向边容量为\( ...
- OI考试需注意的
能用结构体就用结构体,特别是队列之类的数据结构:类别相同的变量或数组名字不要太相近,最好在名字后面加上标识符(e.g:hash[]&HASH[]就不好,hash1[]&hash2[]正 ...
- HTML使用的几个小知识点
本文主要分享几个网页前端的几个基础知识点,用于零碎的html知识学习,同时也是在实践中的一些心得.最后给出了几个小例子. 1. 网页编程初识 掌握基本的html标签以及CSS语法 学会查看网页的源代码 ...
- Linux搭建 SVN 服务器
安装 Subversion Subversion 是一个版本控制系统,相对于的 RCS . CVS ,采用了分支管理系统,它的设计目标就是取代 CVS . yum install -y subvers ...
- go defer笔记
1.函数中return xxx非原子指令 2.函数返回过程:先给返回值赋值:再调用defer:最后回到调用函数中 即:返回值 = xxx; defer; return; 3.多个defer调用顺序类似 ...