Einzelnen Beitrag anzeigen

Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#1

Pointer of Dynamic Array

  Alt 27. Feb 2015, 18:30
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

Geändert von Crocotronic (28. Feb 2015 um 00:01 Uhr)
  Mit Zitat antworten Zitat