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