Hallo Zusammen,
ich suche für folgendes ein Ersatz:
FFieldNames = TStringList
Delphi-Quellcode:
function GetFieldIndex(Name: String): Integer;
var
idx: Integer;
begin
idx := FFieldNames.IndexOf(Name);
if ( idx >= 0 ) then
Exit(idx);
Result := FFieldNames.Add(Name);
end;
function GetFieldName(Idx: Integer): String;
begin
Result := FFieldNames[Idx];
end;
Es geht darum das immer wiederkehrende Strings in einer Liste gespeichert und jeder String eine eindeutige Id bekommt. Die Id wird als Integer "gemerkt" und später wenn der benötigt wird dann per Index wieder abgegriffen... Es handelt sich dabei um ca. 500 Einträge, die dann auf bis 50.000 x 50 Werte verteilt werden, es stehen als 250.000 * 12 Zeichen (im Schnitt), gegen 250.000 Integer, die speicherersparnis ist enorm
Mein Knackpunkt: Laaaaangsam
Nachteil dabei ist, ich kann FFieldNames nicht auf "Sorted" setzen, da sonst beim Hinzufügen der Index vorhandener Einträge sich verändert und später GetFieldName nur murks liefert.
Jemand eine performante Lösung dafür?