Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nils
Anmeldungsdatum: 24.03.2006 Beiträge: 191
|
Verfasst am: 26.09.2015, 17:55 Titel: CLEAR im SUB |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Sebastian Administrator
![](images/avatars/563932275488e4d20c5ee9.jpg)
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 26.09.2015, 18:54 Titel: Lokale Variablen in SUB- oder FUNCTION-Scope |
|
|
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 _________________
Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
Nils
Anmeldungsdatum: 24.03.2006 Beiträge: 191
|
Verfasst am: 26.09.2015, 20:11 Titel: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Sebastian Administrator
![](images/avatars/563932275488e4d20c5ee9.jpg)
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 26.09.2015, 20:33 Titel: |
|
|
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.) _________________
Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
dreael Administrator
![](images/avatars/112279543641421ec80e8e2.gif)
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 26.09.2015, 20:38 Titel: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Grundlagenfan Gast
|
Verfasst am: 06.10.2015, 11:16 Titel: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
|