Delphi 泛型的使用案例
解决问题:如有一组数字,55 68 79 120 130 180 先进行最大两个数的比对,譬如 130 180 比对,取小值,得到130,大的180-130=50, 然后在将50放入剩余的55 68 79 120比对,重复上面的比对要求,如79 120 比对结果41 再和55 68比对,运行直至最后两个的差值。
- 应用泛型的排序与复制
- Tarray.Sort
- Tarray.Copy
需要引用文件
uses Generics.Collections, Generics.Defaults;
代码块
具体代码如下:
var
i, x: Integer;
dd, DD1: Tarray<Integer>;//定义两个泛型变量
begin
dd := [180, 68, 79, 120, 130, 55];//给变量赋值
x := Length(dd);//取长度以方便计算
while x > 1 do
begin
Tarray.Sort<Integer>(dd);//使用泛型排序
i := dd[x - 1] - dd[x - 2];//计算两最大数差值
SetLength(DD1, x - 1);//设置过渡变量长度(这里为了使用泛型copy,否则可以直接使用下面注释代码)
Tarray.Copy<Integer>(dd, DD1, 0, 0, x - 2);//泛型复制
DD1[x - 2] := i;//将差值加入到目标数组
dd := DD1;//改变原数组
{
SetLength(DD, x - 1);
DD[x - 2] := i;
}
x := Length(dd);
end;
end;