Nicht nur "vielleicht"!
Aber das wird wohl nicht der Fehler sein, denn dort kommt ein Index-Fehler (OutOfRange, bzw. genauer eine EArgumentOutOfRangeException).
Viel eher würde ich auf das Get vom TJsonObject tippen,
denn das liefert NIL, wenn es kein SubObjekt mit diesem Namen (id oder name) gibt,
und demnach muß es im JSONValue knallen, weil DU die Rückgabe vorher nicht prüfst.
Und ich vermute mal stark, da sollte ein BEGIN END; hinterm
if (JSONValue is TJSONArray) then
vorkommen?
Alles Dinge, die man beim Debuggen leicht bemerken könnte.
Ach ja, ParseJSONValue ist eine Class-Function,
welche man normaler Weise als
TJSONValue.ParseJSONValue(...)
aufruft.
Zitat:
Delphi-Quellcode:
JsonObject := TJsonObject.Create;
JsonValue := JsonObject.ParseJSONValue(st);
JsonValue := TJSONValue.ParseJSONValue(st);
Also das JsonObject ist unnötig. (auch wenn es zum Glück kein "Fehler" ist)
Und ich hoffe du gibst am Ende auch alles wieder brav frei. (Free)
Da es aber grad zufällig so wunderschön bei dir knallt ... Wäre super, wenn man mehr Ressorcen-Schutzblöcke (try finally) sehen würde.
PS: Den Knopf mit dem Delphi-Helm hattest du nicht zufällig bemerkt?
[delphi] dein Code [/delphi]