Code zur Laufzeit ausführen

    • VB6

      Code zur Laufzeit ausführen

      Verwendung

      Falls zur Laufzeit Code ausgeführt
      werden soll, über den man sich zum Zeitpunkt
      des Programmierens nicht im klaren ist, dann
      kann man mithilfe der CallByName Funktion
      Prozeduren oder Eigenschaften mithilfe eines Strings
      Aufrufen bzw. Verändern.



      Syntax

      Der Syntax der Funktion ist wie folgt:

      Object: Das Objekt, dessen Methode/Eigenschaft man
      manipulieren möchte. Soll beispielsweise die Text Eigenschaft
      eines Textfeldes mit dem Namen Text1 verändert werden,
      welches sich auf dem Formular Form1 befindet, gibt man als
      Objekt Form1.Text1 an.

      ProcName: Name der Prozedur oder Eigenschaft die
      verändert werden soll. Für das oben aufgeführte Beispiel mit
      dem Textfeld muss als Prozedurname "Text" übergeben
      werden.

      CallType: Hier muss angegeben werden, um welchen
      Aufruf Typ es sich handelt. Zur Verfügung die Typen VbGet
      VbLet/VbSet
      sowie VbMethod. VbGet/Let/Set
      werden bei Eigenschaften verwendet, VbMethod bei
      Prozeduren und Funktionen. Im Beispiel oben bedeutet das,
      dass man zum verändern der Text Eigenschaft VbLet angeben
      muss. Will man wissen, welchen Wert die Text Eigenschaft
      gerade besitzt, gibt man VbGet an. VbSet würde bei
      Eigenschaften verwendet werden, die ein Objekt repräsentieren,
      beispielsweise wenn man die Picture Eigenschaft einer PictureBox
      verändern möchte.

      Args: Hier können alle Parameter übergeben werden, die die
      Eigenschaft/Prozedur erwartet. Falls die Funktion/Eigenschaft keine
      Parameter akzeptiert, dann muss dieses Argument ausgelassen werden.
      Man darf auch keinen leeren String ("") übergeben, weil das ebenfalls ein
      Parameter wäre. Bei dem Textfeld-Beispiel müsste dieser Parameter also
      ausgelassen werden. Wenn eine Funktion mehrere Parameter erwartet,
      müssen diese durch Kommata getrennt werden.



      Beispiele

      Visual Basic-Quellcode

      1. '...
      2. 'Im Deklarationsbereich des Formulares
      3. Public gObject As Object
      4. Sub Lesen()
      5. 'So wird der Wert des Textfeldes gelesen
      6. Dim strWert As String
      7. strWert = CallByName(Form1.Text1, "Text", VbGet)
      8. End Sub
      9. Sub Setzen()
      10. 'So wird der Wert des Textfeldes gesetzt:
      11. CallByName Form1.Text1, "Text", VbLet, "Test"
      12. End Sub
      13. Sub ObjektSetzen()
      14. 'Auch Objekte können gesetzt werden:
      15. CallByName Me, "gObject", VbSet, Form1.Text1
      16. gObject.Text = "TestWert" 'Das Steuerelement Text1 hat jetzt den Wert "TestWert"
      17. End Sub
      18. Sub Aufrufen()
      19. 'Wenn man eine Funktion aufrufen möchte:
      20. Dim strWert As String
      21. strWert = CallByName(Me, "EinfacheFunktion", VbMethod, "Test", "Wert")
      22. MsgBox strWert 'Liefert "TestWert"
      23. End Sub
      24. Function EinfacheFunktion(ByVal strParameter1 As String, ByVal strParameter2 As String) As String
      25. EinfacheFunktion = strParameter1 & strParameter2
      26. End Function




      Anmerkungen

      - Man sollte keinen exzessiven Gebrauch der Funktion machen,
      sie ist nämlich relativ langsam, da Visual Basic erst einmal
      das/die betroffene Objekt/Funktion suchen muss.

      - Es ist nicht möglich die Übergabe von Parametern zu automatisieren,
      da diese durch Kommata getrennt werden müssen.

      - Es ist nicht möglich Funktionen oder Objekte aufzurufen, die das Attribut
      Private besitzen.

      - Funktionen die in Modulen (nicht Klassenmodulen) deklariert wurden, können
      nicht aufgerufen werden.


      Links

      MSDN CallByName Function - Allgemeine Informationen zur Funktion
      MSDN Knowledge Base - Beispiel zur Verwendung von CallByName


      Keywords: Visual Basic, VB 6, Eval, Call By Name, Code zur Laufzeit erstellen

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mad Andy“ ()