Hallo zusammen,
bei der lkJSON-Klasse gibt es eine ForEach-Methode um eine Array eines JSON-Objekts auszulesen. Als Argument muss man die CallBack-Funktion angeben und irgendeine Datenstruktur (in meinem Fall ein dynamisches Array). Folgender Code:
Delphi-Quellcode:
type
TElement = record
Value: String;
end;
TElements = array of TElement;
PElements = ^TElements;
procedure ExtractElements(AElementName: string; AElement: TlkJSONbase; ADataPtr: Pointer; var Continue: Boolean);
var Elements: PElements;
begin
Elements:= PElements(ADataPtr);
SetLength(Elements^,High(Elements^)+2);
Elements^[High(Elements^)].Value:= xxxx;
showmessage(inttostr(High(Elements^)));
end;
// Aufruf:
var MyElements: TElements;
(AJSON.Field['su'] as TlkJSONlist).ForEach(ExtractElements, @MyElements);
Jetzt ist mein Problem, dass die Länge von dem Array nicht wächst, sonder imm bei 1 bleibt. Also das
showmessage
gibt mir immer 0 zurück (was dann Count=1 bedeutet).
Warum?
Viele Grüße
Croco