Delphi 泛型的使用案例

2021-07-27 17:57:45 字數 848 閱讀 2917

解決問題:如有一組數字,55 68 79 120 130 180 先進行最大兩個數的比對,譬如 130 180 比對,取小值,得到130,大的180-130=50, 然後在將50放入剩餘的55 68 79 120比對,重複上面的比對要求,如79 120 比對結果41 再和55 68比對,執行直至最後兩個的差值。

uses generics.collections, generics.defaults

;

具體**如下:

var

i, x: integer;

dd, dd1: tarray;

//定義兩個泛型變數

begin

dd:= [180, 68, 79, 120, 130, 55];

//給變數賦值

x := length(dd);

//取長度以方便計算

while x > 1 do

begin

tarray.sort

(dd);//使用泛型排序

i:= dd[x - 1] - dd[x - 2];

//計算兩最大數差值

setlength(dd1, x - 1);//設定過渡變數長度(這裡為了使用泛型copy,否則可以直接使用下面注釋**)

tarray.copy

(dd, dd1, 0, 0, x - 2);//泛型複製

dd1[x - 2]

:= i;

//將差值加入到目標陣列

dd:= dd1;

//改變原陣列

x := length(dd);

end;

end;

泛型的引入與案例

泛型引入原因 public class objecttool public void setobj object obj 早期的時候,我們使用object來代表任意的型別。向上轉型是沒有任何問題的,但是在向下轉型的時候其實隱含了型別轉換的問題。也就是說這樣的程式其實並不是安全的。所以j a在jdk5...

delphi2010泛型練習

showmessage 該會員代號已存在,不能重複新增。end procedure tform1.edit2keypress sender tobject var key char begin if key 13 then button1.click end procedure tform1.but...

泛型的使用

unit unit1 inte ce uses winapi.windows,winapi.messages,system.sysutils,system.variants,system.classes,vcl.graphics,vcl.controls,vcl.forms,vcl.dialogs ...