Warum erzeugst du dann nicht eine typisierte generische Objektliste?
Delphi-Quellcode:
TMyObjectList<T> = class(System.Generics.Collections.TObjectList<TDriverBase>)
public
function Search(ASearchCrit: integer): T;
end;
Problem 1 versteht ich nicht. Was willst Du machen?