Hallo,
ich versteh grad die Welt mal wieder gar nicht mehr. Function gibt String zurück, der aus einem Record-Array nach JSON konvertiert wird.
Weise ich das Ergebnis direkt an Result zu, kommt Müll dabei raus (Variante 1 im Quellcode).
Speichere ich in einem String zwischen, dann passt alles (Variante 2 im Quellcode).
Die Werte in meinem Array werden korrekt berechnet, wenn ich nach der Zuweisung mit Strg-F7 die Werte anschaue, steht im Ausdruck
TJson.Format( LArr) das richtige drin, im Ausdruck
result hingegen stehen plötzlich Werte für Pos-Vorschub, die im Array gar nicht vorkommen.
Code:
function TTestCalculate.CalculateOld(typ: Edit):string;
var
LJson, LJsonObject: TJSONObject;
LArr: TJSONArray;
i: integer;
ergebnis:string;
begin
if FormCalculate.DoCalculate(Data, KORREKTUR_ANSCHLAG, KORREKTUR_STANZPOS, true) = mrOk then
begin
for i := 0 to 199 do
begin
LJson := TJSONObject.Create;
LJson.AddPair(TJSONPair.Create('PosVorschub', Programm[i].PosVorschub.ToString));
... // hier kommen noch ein paar Zuweisungen
LJson.AddPair(TJSONPair.Create('Freigaben2', Programm[i].Freigaben2.ToString));
LArr.Add(LJson);
end;
result:= TJson.Format( LArr); // <-- Variante 1
// ergebnis:=TJson.Format( LArr); // <-- Variante 2
// Result:=ergebnis; // <-- Variante 2
end;
finally
LArr.Free;
end;
end;