Einzelnen Beitrag anzeigen

Benutzerbild von Linor
Linor

Registriert seit: 19. Mai 2008
Ort: Holzwickede
60 Beiträge
 
Delphi 2010 Professional
 
#1

String/Integer Hash

  Alt 31. Okt 2011, 16:16
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?
Gruß, Kai
Imabas - see you on http://www.pixandmore.de
  Mit Zitat antworten Zitat