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?