Runtime


Syntax
Runtime Variable
Runtime #Konstante
Runtime Procedure() Deklaration
Runtime Enumeration Deklaration
Beschreibung
Für fortgeschrittene Programmierer. Runtime wird verwendet, um eine zur Laufzeit (Runtime) zugängliche Liste von Programmobjekten wie Variablen, Konstanten oder Prozeduren zu erhalten. Sobald ein Programm kompiliert wurde, hat es keine Variablen-, Konstanten- oder Prozedur-Bezeichnungen ("Labels") mehr, da alles in Binärcode umgewandelt wurde. Runtime zwingt den Compiler, eine zusätzliche Referenz für ein bestimmtes Objekt hinzuzufügen, damit dieses für und über die Runtime Bibliothek verfügbar ist. Die Objekte können mit Hilfe ihrer String-Referenz manipuliert werden, auch wenn das Programm kompiliert wurde.

Um die Verwendung von Runtime zu veranschaulichen: Die Dialog Bibliothek verwendet dies, um auf die einem Gadget zugewiesene Ereignis-Prozedur zuzugreifen. Der Name der für den Event-Handler zu verwendenden Prozedur wird in der XML-Datei angegeben (welche im Text-Format vorliegt), und dann verwendet die Dialog-Bibliothek GetRuntimeInteger(), um die Prozedur-Adressen zur Laufzeit aufzulösen. Es ist nicht notwendig das Programm neu zu kompilieren, um diese zu ändern.

Eine weitere Anwendung wäre das Hinzufügen einer kleinen Realtime-Skriptsprache zum Programm, welche eine einfache Änderung von freigegebenen Variablen durch die Verwendung von konstanten Werten zur Laufzeit ermöglicht. Während dies auch manuell durch den Aufbau einer Map von Objekten erreicht werden kann, ermöglicht die Verwendung des Runtime Schlüsselworts dies auf standardisiertem und einheitlichem Weg zu tun.

Beispiel: Procedure

  Runtime Procedure OnEvent()
    Debug "OnEvent"
  EndProcedure 

  Debug GetRuntimeInteger("OnEvent()") ; wird die Prozedur-Adresse anzeigen

Beispiel: Enumeration

  Runtime Enumeration
    #Constant1 = 10
    #Constant2
    #Constant3
  EndEnumeration

  Debug GetRuntimeInteger("#Constant1")
  Debug GetRuntimeInteger("#Constant2")
  Debug GetRuntimeInteger("#Constant3")

Beispiel: Variable

  Define a = 20
  Runtime a

  Debug GetRuntimeInteger("a")
  SetRuntimeInteger("a", 30)
  
  Debug a ; die Variable wurde verändert

Beispiel: Aufrufen einer Funktion anhand ihres Namens

  Prototype Function()

  Runtime Procedure Function1()
      Debug "I call Function1 by its name"
  EndProcedure

  Runtime Procedure Function2()
      Debug "I call Function2 by its name"
  EndProcedure

  Procedure LaunchProcedure(Name.s)
      Protected ProcedureName.Function = GetRuntimeInteger(Name + "()")
      ProcedureName()
  EndProcedure

  LaunchProcedure("Function1") ; Display "I call Function1 by its name"
  LaunchProcedure("Function2") ; Display "I call Function2 by its name"