TPredicate(T) Kullanımı

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
ismailkocacan
Üye
Mesajlar: 88
Kayıt: 25 Eyl 2011 06:11
Konum: İstanbul
İletişim:

TPredicate(T) Kullanımı

Mesaj gönderen ismailkocacan »

Kod: Tümünü seç

{
 İsmail Kocacan
 TPredicate Kullanımı
}
unit Unit1;

interface

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls;

type

  TStringListHelper = class helper for TStringList
    function Where(Condition: TPredicate<Integer>): TStringList;
  end;

  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    
  public

  end;

var
  Form1: TForm1;

  
 

implementation

{$R *.dfm}

 
procedure TForm1.FormCreate(Sender: TObject);
var
  AList: TStringList;
begin
  AList := TStringList.Create;
  AList.Add('Ali');
  AList.Add('Veli');
  AList.Add('Deli');
  AList.Add('İsmail');  

  Memo1.Lines.AddStrings(
      AList.Where(
              function(Arg: Integer): Boolean
                  begin
                    Result := Arg > 3;
                  end
      )
  );
  
  AList.Free;
end;


{ TStringListHelper }
function TStringListHelper.Where(Condition: TPredicate<Integer>): TStringList;
var
  I: Integer;
  NewList: TStringList;
begin
  NewList := TStringList.Create;
  for I := 0 to Self.Count - 1 do
  begin
    if Condition(Length(Self[I])) then
      NewList.Add(Self[I]);
  end;
  Result := NewList;
end;

end.

Yukarıdaki örnekte TStringList'e Where isminde bir extension(uzanım) fonksiyon yazdık.
Bu fonksiyon TStringList de bulunan,karakter sayısı 3 den büyük elemanları, yeni bir liste olarak geriye döndürür.


C# Predicate Kullanımı Bknz : http://msdn.microsoft.com/en-us/library/bfcke1bz.aspx
C# Extension Method Kullanımı Bknz : http://msdn.microsoft.com/en-us/library/bb383977.aspx

İyi Çalışmalar.
Dosya ekleri
TPredicate Kullanım.rar
XE
(84.23 KiB) 141 kere indirildi
Cevapla