Есть факты объективные - бага, например.
А есть субъективные - нравится/не нравится.
Согласен - проблем с совместимостью лучше своими руками не строить.
И ТО ЖЕ САМОЕ по функциональности (т.е., в определенной степени - субъективное мнение) делал бы так:
function ForceGVar(const Name:string):PData;
var i:integer;s:string;
begin
Result := nil;
if Name=' then exit;
s := LowerCase(Name);
i := NList.IndexOf(s);
if i>=0 then
Result := PData(NList.Objects[i])
else begin
new(Result);
dtNull(Result^);
NList.AddObject(s,cardinal(Result));
end;
end;
А там глядишь, новый KOL подоспеет... Хотя новые фичи из KOL-а, по прошлому опыту - года полтора расхлебываются