Einzelnen Beitrag anzeigen

apm

Registriert seit: 22. Nov 2010
28 Beiträge
 
#1

mehrere Record-Variablen über Procedure ändern

  Alt 19. Apr 2021, 19:06
Hallo!
Ich stehe gerade minimal auf dem Schlauch...

In meinem Programm habe ich einen Record mit mehreren Bool-Variablen.
Diese müssen an Hand von Text-Informationen aus einem JSON-Array ggf. auf true gesetzt werden.

Da ich das merfach machen muss und eig. keine direkte Anweisung für jede Variable definieren will war das mein Gedanke:
Ich schreibe eine Procedure, welche die String-Infos aus dem JSON-Array mit denen abgleicht, welche für den true-Status relevant sind.
Entsprechend eines Treffers will ich eine einzelne Variable auf true setzten.

Mein Problem / Fehler ist, dass ich die Record-Variablen nicht in meine Procedure übergeben kann, um diese direkt zu ändern ("var" Angabe der Definition): Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden


Teile vom Record:
Delphi-Quellcode:
type
  TRecEvent = record

    //...

    bCustomMediaHidePrint, bCustomMediaHideApp : Boolean;
  end;

Funktion zum überarbeiten der Boolean-Werte:
Delphi-Quellcode:
procedure proc_loadCustomFiedBooleanState(const sUrl : String; const sArrTrueText : Array of String; var bArrTrueState : Array of Boolean; var jObj : TJSONObject);
  var i, j : Integer;
      jArr : TJSONArray;
begin
  if (Length(sArrTrueText) = 0)
  or (Length(bArrTrueState) = 0)
  or (Length(sArrTrueText) <> Length(bArrTrueState)) then
    Exit;

  try

      jArr := func_jsonGetArray(sUrl, jObj);

      for i := 0 to jArr.Count-1 do
        for j := 0 to High(sArrTrueText) do
          if jArr[i].Value.Equals( sArrTrueText[j] ) then
          begin
            bArrTrueState[j] := true;
            Break;
          end;

  except
  end;
end;

Funktionsaufruf:
Delphi-Quellcode:
          proc_loadCustomFiedBooleanState( sWebMecEventCustomMediaHideUrl,
                                            [sWebMecEventCustomMediaHidePrint, sWebMecEventCustomMediaHideApp],
                                            [Result[High(Result)].bCustomMediaHidePrint, Result[High(Result)].bCustomMediaHideApp],
                                            JSONObject);
Vom Record baue ich einen Array, um diesen später weiterzuverarbeiten.
Result = TArray<TRecEvent>



Hat jemand eine Idee?
  Mit Zitat antworten Zitat