type
TListPredicate = function(e: pointer): Boolean;
TListElementFunc = function(e: pointer): pointer;
function NewList(X: TList; P: TListPredicate; T: TListElementFunc): TList;
var
e: pointer;
begin
Result := TList.Create;
for e in X do
begin
if P(e) then
Result.Add(T(e));
end;
end;
type
TListPredicate = function(e: pointer): Boolean;
TListElementFunc = function(e: pointer): pointer;
function NewList(X: TList; P: TListPredicate; T: TListElementFunc): TList;
var
e: pointer;
begin
Result := TList.Create;
for e in X do
begin
if P(e) then
Result.Add(T(e));
end;
end;