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

k10/k10.5/k10.5.7/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge