Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Assign für TDictionary implementieren

  Alt 4. Sep 2019, 14:12
oder den generischen parameter umnennen, ich hab das mal so gelöst gehabt: map<tkey,t>
Danke, so mache ich es.

Übrigens die Schleife über die Keys und dann das Lookup jedes Wertes ist denkbar inperformant. Dann doch lieber direkt mit einer TPair<TKey,TValue> variable per for in über das Dictionary.
Hast Du ein kurzes Beisipel dafür?
Delphi-Quellcode:
type
  TMyDictionary<TKey, T> = class(TDictionary<TKey, T>)
  public
    procedure Assign(Source: TObject); virtual;
  end;


procedure TMyDictionary<TKey, T>.Assign(Source: TObject);
var
  LPair: TPair<TKey, T>;
  LSourceDictionary: TMyDictionary<TKey, T>;
begin
  if Source is TMyDictionary<TKey, T> then
  begin
    Self.Clear // ohne Clear -> kein richtiges Assign
    LSourceDictionary := TMyDictionary<TKey, T>(Source);
    for LPair in LSourceDictionary do
    begin
      Self.Add(LPair.Key, LPair.Value);
    end;
  end
end;

Geändert von TiGü ( 4. Sep 2019 um 14:58 Uhr) Grund: Hinweis von Stevie eingepflegt!
  Mit Zitat antworten Zitat