Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

CLEAR im SUB

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 181

BeitragVerfasst am: 26.09.2015, 16:55    Titel: CLEAR im SUB Antworten mit Zitat

Moin Gemeinde!

Kann ich innerhalb einer SUB den CLEAR Befehl benutzen ohne dass mir die Variablen des Hauptprogramms gelöscht werden?
Oder gibt's das besonderes zu beachten?
Will nämlich autonom lauffähiges Prog in eine Sub tun, den Parameter der in der for ... next Schleife hochgezählt wird übergeben und damit dann die Sub immer wieder aufrufen bis die Schleife zu Ende ist.

grüsse Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5895
Wohnort: Deutschland

BeitragVerfasst am: 26.09.2015, 17:54    Titel: Lokale Variablen in SUB- oder FUNCTION-Scope Antworten mit Zitat

Hallo,

innerhalb einer SUB oder FUNCTION können mit DIM lokale Variablen deklariert werden. Diese sind nur innerhalb der SUB bzw. FUNCTION gültig (in diesem sog. "Scope") und behalten ihren Wert nur innerhalb einer Ausführung der Prozedur - es sei denn, sie sind STATIC deklariert. D. h. die Variablen werden beim Aufruf der Prozedur initialisiert und ihr Wert wird beim Verlassen der Prozedur automatisch wieder "vergessen".

Code:
Declare Sub Aufruf(ByVal x%)

For i% = 1 To 5
    Aufruf(i%)
Next i%

Sleep
End


Sub Aufruf(ByVal x%)
    Dim y%
    Print "y% hat gerade den Wert "; Ltrim$(Str$(y%))
    y% = x% * 2
    Print "y% = x% * 2 = "; Ltrim$(Str$(y%))
    Print "Verlasse SUB. Der Wert fuer y% wird vergessen."
    Print ""
End Sub


Viele Grüße!
Sebastian
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Nils



Anmeldungsdatum: 24.03.2006
Beiträge: 181

BeitragVerfasst am: 26.09.2015, 19:11    Titel: Antworten mit Zitat

Hi Sebastian!

Danke für Deine ausführlich Antwort. Da ich die Variablen immer wieder verwende DIMme ich die garnicht.
Wie groß darf denn ein SUB sein?

Grüsse Nils
_________________
Kontrolliert die Politik! Laßt nicht die Politik Euch kontrollieren! Das sind Eure Angestellten! Lasst Sie das spüren!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5895
Wohnort: Deutschland

BeitragVerfasst am: 26.09.2015, 19:33    Titel: Antworten mit Zitat

Nils hat Folgendes geschrieben:
Wie groß darf denn ein SUB sein?

Ich weiß gar nicht mehr, ob es in QB - zusätzlich zum Limit für die gesamte BAS-Datei bzw. das Programm - auch ein "Unter-Limit" für den Umfang einzelner SUBs und FUNCTIONs gab. Das müsstest du einfach testen, ob dein Programm wie geplant läuft. Wenn eine SUB so groß wird, dass QB irgendwelche Fehler deshalb wirft, ist sie wahrscheinlich aber ohnehin nicht gut aufgebaut und sollte besser in kleinere Unterfunktionen zerlegt werden. (Innerhalb von SUBs und FUNCTIONs können wiederum andere SUBs und FUNCTIONs aufgerufen werden.)
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2455
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 26.09.2015, 19:38    Titel: Antworten mit Zitat

Fürs Ganze ansonsten wieder einmal der passende Artikel:

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/SUB-Unterprogramme.html

Ansonsten zum Thema Lebenszeit von Variablen innerhalb von SUBs und FUNCTIONs: Diese liegen normalerweise auf dem Stack und gehen am Ende verloren (Speicherfreigabe), ausser im Prozedurkopf wird STATIC mitgegeben. Im obigen Artikel hat es auch ein spezielles Beispel dazu.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Grundlagenfan
Gast





BeitragVerfasst am: 06.10.2015, 10:16    Titel: Antworten mit Zitat

Soweit ich weiß, gibt es kein Größenlimit. Was ich gerne mache, wenn ich mir unsicher bin, ob die Aufteilung in SUBs Sinn macht, ist dass ich mir den Code dupliziere und eine Version aufgeteilter und die andere weniger aufgeteilt schreibe. Wenn der eine Code nicht funktioniert, versuche ich den anderen code- am Anfang ist das zwar formal bisschen mehr Aufwand, man macht aber weniger Fehler rein durch das bearbeiten von Kleinigkeiten und hat am Ende so weniger Aufwand und einen besseren Überblick.
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz