Ach würde mir eine Klasse implementieren, die einen String hält (und vielleicht noch mehr Informationen)
Delphi-Quellcode:
Type
TMyData = Class
Public
Property StringValue : String;
Property AnotherValue : Double;
End;
...
procedure AddDataRecordToHashMap (aSD : TStringDictionary; aDataSet : TDataset);
Var
d : TMyData;
sKey : String;
Begin
d := TMyData.Create;
d.StringValue := aDataset['SomeStringValueFieldName'];
d.AnotherValue := aDataset['AFloatFieldName'];
sKey := aDataset['KeyFieldName'];
aSD.Add(sKey, d);
End;
Du musst den Speicher aber selbst aufräumen. Also entweder packst Du alle TMyData in eine eigene TObjectList und gibst diese TObjectList frei (OwnsObject = True), oder Du iterierst durch die Hashmap und gibst alle 'Data'-Instanzen selbst frei.