Einzelnen Beitrag anzeigen

Blackpit

Registriert seit: 27. Feb 2019
77 Beiträge
 
#6

AW: Dynamisch Klassenfelder mit Superobjects füllen

  Alt 19. Aug 2019, 15:18
Die Idee mit dem Dictionary fand ich gut, bekomme es aber nicht hin.
Der Gedanke war das Dictionary flexibel zu füllen, so sieht mein Versuch aus:
Delphi-Quellcode:
   TProjectComponents = class
  public
    Components: TDictionary<string,boolean>;//
    function getComponents(aJsonString: String) : TDictionary<string,boolean>;
   // function writeToJson():String;
    procedure readFromJson(aJsonString: String);
  end;

procedure TProjectComponents.readFromJson(aJsonString: String);
var
  json: ISuperObject;
begin
  json := SO(aJsonString);
  bookableFeature := getComponents(aJsonString);
end;

function getComponents(aJsonString: String) : TDictionary<string,boolean>;
var
  val: Boolean;
  json: ISuperObject;
  iterate: TSuperAvlIterator;
  Components :TDictionary<string,boolean>;
begin
  try
  json := SO(aJsonString);
  iterate := json.AsObject.GetEnumerator;
  iterate.First;
  while iterate.MoveNext do
  begin
   Components.Add(iterate.Current.Name, iterate.Current.Value.b['active']);
   //Components.TryGetValue(iterate.Current.Name, val ) and val;
  end;
  iterate.Free;
  finally
    json := nil;
  end;
  Result := Components;
end;
Beim Add kommt eine AV die ich mir nicht erklären kann, im Debugger stehen die richtigen Werte als String und Bool.
Was mach ich falsch?
  Mit Zitat antworten Zitat