Einzelnen Beitrag anzeigen

Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.053 Beiträge
 
Delphi 2009 Professional
 
#11

AW: Ansistring , shortstring

  Alt 15. Apr 2020, 11:31
Ja, der Speicher des Records TKey wird da direkt verglichen, was aber kein Grund sein muß, denn nicht umsonst kann man dem Dictionary einen eigenen Comparer geben und darin auch gern jegwelche Optimierungen integrieren.
Guter Einwand. Kann man machen.

Abgebildet werden bei mir nvarchar(20).
Ich hätte jetzt spontan string genommen. Das erschlägt das Unicode (n) und die variable Länge (var). Der Hash geht immer nur über die aktuelle Länge und gleiche Inhalte ergeben somit denselben Hash. ShortString wäre mir nicht mal als allerletzte Möglichkeit in den Sinn gekommen. Oder machst du mit den Records noch irgendwas, von dem wir hier noch nichts wissen?
Delphi-Quellcode:
type
  TTest = record
    Text: string;
    Zahl: Integer;
  end;

procedure TuWas();
var
  Wert1, Wert2: TTest;
  TestDictionary: TDictionary<TTest, Boolean>;
begin
  Wert1.Zahl := 4711;
  Wert1.Text := 'wupdi';
  Wert2.Zahl := 4711;
  Wert2.Text := 'wupdi';
  TestDictionary := TDictionary<TTest, Boolean>.Create();
  try
    TestDictionary.Add(Wert1, False);
    TestDictionary.Add(Wert2, False); // Sollte fehlschlagen, tut es aber nicht!
  finally
    TestDictionary.Free();
  end;
end;
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat