Benutzer-Werkzeuge

Webseiten-Werkzeuge


k10:k10.5:k10.5.7:start

10.5.7 GoSub

Die 'GoSub'-Anweisung existiert in Gambas seit der Version 3.1.

10.5.7.1 GoSub-Syntax

Es wird bedingungslos zu einem Label gewechselt, das an einer anderen Stelle in der Funktion oder Prozedur erklärt ist. Wenn in den Anweisungen unter dem Ziel(-Label) eine Return-Anweisung steht, kehrt das Programm zurück, um den Code unmittelbar nach der GoSub-Anweisung auszuführen.

GoSub Label
* Anweisung(en) ' → Programm-Fortsetzung nach RETURN

Label:
  Anweisung(en)
  RETURN
…

10.5.7.2 Hinweise zur Syntax

  • Um nach den Anweisungen unter dem Ziel(-Label) Label: nach * zurückzukehren, müssen Sie die Return-Anweisung – allein auf einer Zeile stehend – verwenden.
  • Sie können aber kein Return einsetzen, um ein Unterprogramm zu verlassen, das zwischen Label: und dem GoSub-Return notiert ist. Ein kleines Ärgernis – aber nicht zu ändern.
  • GoSub-Aufrufe können verschachtelt werden.

10.5.7.3 Beispiel 1

Im Kapitel → 16.10 HistoryBox wird eine TextBox um die History-Eigenschaft erweitert, um eine bestimmte Anzahl von Eingaben temporär zu speichern.

In der folgenden TextBox_KeyPress()-Prozedur wird zum Beispiel der gleiche Quelltextabschnitt von Zeile 17-19 zwei mal an unterschiedlichen Stellen (Zeile 6 und Zeile 10) verwendet:

[1]  Public Sub TextBox_KeyPress() 
[2] 
[3]    If Not $hHistory Then Return 
[4]    Select Key.Code 
[5]      Case Key.Up 
[6]        GoSub UPDATE_HISTORY 
[7]        Inc $iCurrent 
[8]        Goto UPDATE_TEXTBOX 
[9]      Case Key.Down 
[10]        GoSub UPDATE_HISTORY 
[11]        Dec $iCurrent 
[12]        Goto UPDATE_TEXTBOX 
[13]    End Select 
[14]    Return 
[15] 
[16]  UPDATE_HISTORY: 
[17]    If $iCurrent = -1 Then Return 
[18]    $hHistory[$iCurrent] = Super.Text 
[19]    Raise HistoryChange 
[20]    RETURN 
[21] 
[22]  UPDATE_TEXTBOX: 
[23]    If $iCurrent = -2 Then Inc $iCurrent 
[24]    If $iCurrent = -1 Then 
[25]      Super.Clear() 
[26]      Return 
[27]    Endif 
[28]    If $iCurrent >= $hHistory.Size Then Dec $iCurrent 
[29]    Super.Text = $hHistory[$iCurrent] 
[30]    Return 
[31] 
[32]  End
  • Den GoSub-Anweisungen in den Zeilen 6 und 10 folgen unbedingte Sprünge zum Ziel(-Label) in der Zeile 16. Nach den Anweisungen in den Zeilen 17-19 folgt in der Zeile 20 mit RETURN der Rücksprung in die Zeile 7 beziehungsweise 11.
  • Das Return in den Zeilen 3, 14, 17, 26 und 30 bewirkt ein Verlassen der TextBox_KeyPress()-Prozedur!

Ein weiteres Beispiel für die Verwendung der GoSub-Anweisung bietet das Projekt Pong von Tobias Boege aus den Beispiel-Projekten von Gambas in der Kategorie Spiele.

Download

Artikel

Download

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
k10/k10.5/k10.5.7/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge