Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: mehrere Record-Variablen über Procedure ändern

  Alt 19. Apr 2021, 19:26
Das Array wird ja gerade erst neu erstellt und ist somit eine implizite lokale Variable. Da dieses Array aber nicht in einer echten Variable steht, würdest du Änderungen daran ja nicht nutzen können. Deshalb kannst du es nicht als Referenz übergeben.

Das sieht für mich auch recht kompliziert aus. Wie wäre es mit einem objektorientierten Ansatz? Wenn du eine TObjectList mit Objekten nutzen würdest, könntest du die Werte direkt in den Objekten ändern, weil das ohnehin Referenzen sind (anders als Records).
Oder alternativ könntest du ein TDictionary<string, Boolean> verwenden und direkt die Booleanwerte zuordnen.

Was da am sinnvollsten ist, kann ich so nicht sagen. Es seht für mich jedenfalls unnötig umständlich aus. Was eventuell eine Möglichkeit wäre, wenn ich das richtig verstanden habe:
Delphi-Quellcode:
procedure proc_loadCustomFiedBooleanState(const AUrl: string; const AValues: TDictionary<string, Boolean>; var AObj : TJSONObject);
var
  i: Integer;
  jArr: TJSONArray;
begin
  if AValues.Count = 0 then
    Exit;

  jArr := func_jsonGetArray(sUrl, jObj);

  for i := 0 to jArr.Count - 1 do
    if AValues.ContainsKey(jArr.Items[i].Value) then
      AValues[jArr.Items[i].Value] := True;
end;
Und generell:
Meistens macht man sich bei solchen Themen das Leben mit einem objektorientierten Ansatz statt einzelner Funktionen und Prozeduren deutlich leichter.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat