Aşağıda TKisi recordu ve TKisi recorlarından oluşan generic bir listimiz var(TKisiList).
Amacımız bu TKisiList de ki "id" değeri en büyük olan TKisi instance'ı bulmak(!).
Bunun için TKisiList sınıfına getMaxIdKisi() methodu ekleyip listenin içindeki her bir elemanın id değerini karşılaştırarak id değeri en büyük olan kişi nesnesini buluyoruz.
unit Kisi;
interface
uses
System.Generics.Defaults,
System.Generics.Collections;
type
TKisi = record
adi: string;
soyadi: string;
id: Integer;
end;
TKisiList = class(TList)
public
function getMaxIdKisi(): TKisi;
end;
implementation
{ TKisiList }
function TKisiList.getMaxIdKisi: TKisi;
var
comparer: IComparer;
i, c: Integer;
begin
comparer := TComparer.Default;
c := Self.Items[0].id;
for i := 1 to Self.Count - 1 do
begin
if comparer.Compare(Self[i].id, c) > 0 then
begin
c := Self[i].id;
Result := Self[i];
end;
end;
end;
end.
var
Form3: TForm3;
implementation
uses Kisi;
{$R *.dfm}
procedure TForm3.FormCreate(Sender: TObject);
var
kisi: TKisi;
kisiList: TKisiList;
idEnbuyukKisi:TKisi;
begin
kisiList:=TKisiList.Create;
kisi.id:=30;
kisi.adi:='İSMAİL';
kisi.soyadi:='KOCACAN';
kisiList.Add(kisi);
kisi.id:=20;
kisi.adi:='KEMAL';
kisi.soyadi:='BAYAT';
kisiList.Add(kisi);
kisi.id:=31;
kisi.adi:='HAYDAR';
kisi.soyadi:='DÜMEN';
kisiList.Add(kisi);
idEnbuyukKisi:=kisiList.getMaxIdKisi;
Caption:=Format('%s %s ',[idEnbuyukKisi.adi,idEnbuyukKisi.soyadi]);
end;
Örneği(XE2) burdan indirebilirsiniz.
Hiç yorum yok:
Yorum Gönder