Einzelnen Beitrag anzeigen

Blackpit

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

Dynamisch Klassenfelder mit Superobjects füllen

  Alt 18. Aug 2019, 23:40
Hallo,
ich komm nicht weiter mit einer KlassenProzedur, welche mittels Superobject
Daten von einem WS zieht. Ich würde die IndexfromString-Lösung gerne dynamisch gestalten, um nur noch die Klassenfelder bei Bedarf zu ergänzen.
Meine verzweifelten Bemühungen als Kommentar
Class:

Delphi-Quellcode:
  TProjectComponents = class
  public
    component1 : Boolean;
    component1 : Boolean;
    component1 : Boolean;
    component1 : Boolean;
    component1 : Boolean;
    function writeToJson():String;
    procedure readFromJson(aJsonString: String);
  end;
Prozedur:

Delphi-Quellcode:
procedure TProjectComponents.readFromJson(aJsonString: String);
var
  json: ISuperObject;
  iterate: TSuperAvlIterator;
  components: ISuperObject;
begin

  try
  json := SO(aJsonString);
  iterate := json.AsObject.GetEnumerator;
  iterate.First;
  while iterate.MoveNext do
  begin
  // ClassField(iterate.Current.Name) := iterate.Current.Value.b['active'];
  // Format('s%',[iterate.Current.Name]) := iterate.Current.Value.b['active'];
  //components := json;
  //components.N[Format('s%',[iterate.Current.Name])] := iterate.Current.Value.b['active'];
    case IndexStr(iterate.Current.Name,['component1','component2','component3','component4','component5'])of
      0: component1 := iterate.Current.Value.b['active'];
      1: component2 := iterate.Current.Value.b['active'];
      2: component3 := iterate.Current.Value.b['active'];
      3: component4 := iterate.Current.Value.b['active'];
      4: component5 := iterate.Current.Value.b['active'];
    end;
  end;
  iterate.Free;
  finally
    json := nil;
  end;

end;
Kann mir jemand helfen?
  Mit Zitat antworten Zitat