Hi I´ve used a library called Hashes.pas from Ciaran McCreesh but since his website is no loger available you can see the single PAS file from the following URL:
Link to Cian McCreesh - Hashes.pas
You can also find it with google with the text: "Cian McCreesh Hashes"
With this library you can do the following:
aString := TStringHash.Create;
aString['color'] := 'blue';
ShowMessage(aString.Items['color']); // blue
Or objects:
aObj := TObjectHash.Create;
aObj['color'] := TBlueClass.Create;
bcBlue:=(aObj.Items['color'] as TBlueClass);
ShowMessage(bcBlue.Name); // Blue (supposing the TBLusClass as a Name property...
Hope it serves you as well as for me.
PS I think the Ares AudioGalaxy project also uses it.