Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.053 Beiträge
Delphi 2009 Professional
|
AW: Ansistring , shortstring
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
|
|
Zitat
|