Wenn du aus TJsonNodeEnumerator ein Interface machst, dann brauchst du dich nicht um das Erzeugen und Freigeben kümmern sondern kannst einfach GetEnumerator nutzen, was derzeit nicht geht, da es defekt ist (erzeugt die Instanz nicht)
Mal kurz hingeschludert:
Delphi-Quellcode:
IJsonNodeEnumerator = interface
function GetCurrent: TJsonNode;
function MoveNext: Boolean;
property Current: TJsonNode read GetCurrent;
end;
TJsonNodeEnumerator = class(TInterfacedObject, IJsonNodeEnumerator)
private
FNode: TJsonNode;
FIndex: Integer;
public
constructor Create(Node: TJsonNode);
function GetCurrent: TJsonNode;
function MoveNext: Boolean;
property Current: TJsonNode read GetCurrent;
end;
...
function TJsonNode.GetEnumerator: IJsonNodeEnumerator;
begin
Result := TJsonNodeEnumerator.Create(Self);
end;