Okay Neuer Anlauf, mit dem Code Klappts nun. Noch 2 Bitten.
1.) kann die Funktion so bleiben? (Create des Array ohne Freigabe und zuweisung auf Result + Aufruf des Body.SetValue sollte das doch eigentlich frei geben, oder?)
2.) Das Ursprüngliche Verhalten ist doch ein Bug oder mach ich was falsch? Hab auch gerade nochmal mit Delphi 11 versucht, gleiches Problem.
Gut nun aber der Code mit der Bitte mal drüber zu fliegen ob man dass so lassen kann. Danke!
Delphi-Quellcode:
function DatasetToJSONArray(aFDQuery: TFDQuery): TJSONArray;
var
lArray: TJSONArray;
begin
if assigned(aFDQuery) and not aFDQuery.IsEmpty then
begin
lArray := TJSONArray.Create;
try
aFDQuery.first;
while not aFDQuery.eof do
begin
var
o: TJSONObject := TJSONObject.Create;
for var I := 0 to aFDQuery.Fields.Count - 1 do
begin
if not varisnull(aFDQuery.Fields.Fields[I].value) then
o.AddPair(aFDQuery.Fields.Fields[I].FieldName, aFDQuery.Fields.Fields[I].value)
else
o.AddPair(aFDQuery.Fields.Fields[I].FieldName, '')
end;
lArray.AddElement(o);
aFDQuery.Next;
end;
finally
Result := lArray;
end;
end;
end;
procedure TDataResource1.GetTableItems(const AContext: TEndpointContext; const ARequest: TEndpointRequest;
const AResponse: TEndpointResponse);
...
AResponse.Body.SetValue(DatasetToJSONArray(lquery),true);
...
end;