Lade...
 

ExecuteWeak

ExecuteWeak

219953

ExecuteWeak

Stack
Stack Position Beschreibung
Stack(In) Top eine Prozedur
  ab Top-1 Parameter für die Prozedur
Stack(Out)   hängt vom ausgeführten Code ab

Eine mit () auf den Stack gebrachte Prozedur wird wie bei Execute aufgerufen. Fehler, die innerhalb der Prozedur auftreten, werden aber im Gegensatz zu Execute nicht gemeldet, sondern durch einen INVALID-Wert auf dem Stack signalisiert. Im Erfolgsfall wird kein spezieller Wert auf den Stack gelegt. Will man also auf einen Fehler in der Ausführung prüfen, dann sollte vor is(INVALID) zusätzlich geprüft werden, ob überhaupt ein Wert auf dem Stack liegt, oder man sollte innerhalb der auszuführenden Prozedur im Erfolgsfall immer einen Wert auf den Stack legen.

Der Fehler selbst kann per CX_SYSTEM_OBJECT։։GetLastError aus dem Fehlerspeicher des Systems ausgelesen werden.

cancel wird durch ExecuteWeak nicht abgefangen.

-> items -> totalCost ({ // Calculate something totalCost items / Dup -> costPerItem // items could be 0! }) ExecuteWeak is(INVALID) if { SystemObject Call(GetLastError) // Handle error 0 -> costPerItem } // continue with calculation ...

 

Stack
Stack Position Beschreibung
Stack(In) Top InstantView®-Anweisung als Zeichenkette
  ab Top-1 weitere, von den Anweisungen benötigte Werte...
Stack(Out)   hängt vom ausgeführten Code ab

Die Zeichenkette vom Stack-Top muss gültigen InstantView-Code enthalten, der dann im aktuellen Kontext übersetzt und ausgeführt wird. Da in diseser Variante auch das Parsen des Codes innerhalb von ExecuteWeak ausgeführt wird, werden auch Parse-Fehler (Bsp. ungültige Variablenreferenz) durch ExecuteWeak abgefangen.

Var(myVar) "12 -> mxVar" ExecuteWeak // -> INVALID
 
Siehe auch