Einzelnen Beitrag anzeigen

DCoderHH

Registriert seit: 4. Feb 2015
Ort: Hamburg
84 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Assign für TDictionary implementieren

  Alt 4. Sep 2019, 10:43
Hallo,

ich hab eine eigene Klasse (TMyDictionary), die von TDictionary abgeleitet ist erstellt. Diese soll u.a. auch eine Assign-Funktion erhalten, um das ganze Dictionary in ein anderes zu kopieren. Doch es gibt in der Zeile, die mit **FEHLER** markiert ist, diesen Fehler:

Code:
Fehler E2010 Inkompatible Typen 'MeineUnit.TValue' und 'System.Rtti.TValue'
Was kann ich tun?
(Warum klappt das Zuweisen von TKey? Das von TValue auf die gleiche Art und weise aber nicht?)

Delphi-Quellcode:
interface

TMyDictionary<TKey, TValue> = class(TDictionary<TKey, TValue>)
public
  ...
  procedure Assign(Source: TObject); virtual;
end;

...

implementation

procedure TMyDictionary<TKey, TValue>.Assign(Source: TObject);
var
  LKey: TKey;
  LValue: TValue;
begin
  if Source is TMyDictionary<TKey, TValue> then
  begin
    for LKey in (Source as TMyDictionary<TKey, TValue>).Keys do
    begin
      LValue := (Source as TMyDictionary<TKey, TValue>).Items[LKey];
      Add(LKey, LValue); <-- **FEHLER**
    end;
  end
  else
    AssignError(Source, self);
end;
  Mit Zitat antworten Zitat