A simple-minded descendant of this sort should do it
uses Classes;
TSliceList = class(TList)
public
function SliceList(startSlice, endSlice: integer): TList;
end;
implementation
function TSliceList.SliceList(startSlice, endSlice: integer): TList;
var
j: integer;
begin
Result:=nil;
j:=Count;
if (startSlice > -1) and (startSlice < j) and (endSlice > -1) and
(endSlice < j) and (startSlice < endSlice) then
begin
Result:=TList.Create;
j:=endSlice - startSlice + 1;
Result.Capacity:=j;
for j:=startSlice to endSlice do
Result.Add(Items[j]);
end;
end;