Joar, wie man schon an der #2 sieht, kann man hier beliebig die Prozedur-Signatur (Parameter) ändern, da man nur einen untypisierten Pointer zur Callback-Prozedur rein gibt.
Delphi-Quellcode:
procedure ExtractElements(AElementName: string; AElement: TlkJSONbase; ADataPtr: PElements; var Continue: Boolean);
begin
SetLength(ADataPtr^, Length(ADataPtr^)+1);
ADataPtr^[High(ADataPtr^)].Value:= xxxx;
ShowMessage(IntToStr(Length(ADataPtr^)));
end;
procedure ExtractElements(AElementName: string; AElement: TlkJSONbase; var AData: TElements; var Continue: Boolean);
begin
SetLength(AData, Length(AData)+1);
AData[High(AData)].Value:= xxxx;
ShowMessage(IntToStr(Length(AData)));
end;
// Aufruf(e):
var MyElements: TElements;
(AJSON.Field['su'] as TlkJSONlist).ForEach(ExtractElements, @MyElements);