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.