Gleiche Zähler-Variable in zwei Sub's

16/07/2012 - 13:33 von Heinz-Mario Frühbeis | Report spam
Hallo!

Wenn man z. Bsp. folgendes ausführt:

A)

Private Sub DoSome()
Dim i as Long, j As Long, k As Long
For i = 1 To 10
k = k + 1
Next j ' <-- ergibt hier einen Fehler, was ja gut ist
For j = 1 To 10
k = k + 1
Next j
End Sub

Aber was ist bei folgendem?

B)

Private Sub DoSome()
Dim i as Long
For i = 1 To 10
DoSome_1
Next i
End Sub

Private Sub DoSome_1()
Dim i as Long, k As Long
For i = 1 To 10
k = k + 1
Next i
End Sub

Das ergibt zwar keinen Fehler, aber ich frage mich immer, ob eine Variable
tatsàchlich gekapselt ist in einer Sub (oder Funktion, oder oder)?
Also:
Kann bei Bsp. B) vllt. irgendwas "durcheinander" kommen bezgl. der Variable
i ?

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Christian Zimmermann
16/07/2012 - 14:31 | Warnen spam
Hallo Heinz-Mario,

Am 16.07.2012 13:33, schrieb Heinz-Mario Frühbeis:


Wenn man z. Bsp. folgendes ausführt:

A)

Private Sub DoSome()
Dim i as Long, j As Long, k As Long
For i = 1 To 10
k = k + 1
Next j ' <-- ergibt hier einen Fehler, was ja gut ist
For j = 1 To 10
k = k + 1
Next j
End Sub

Aber was ist bei folgendem?

B)

Private Sub DoSome()
Dim i as Long
For i = 1 To 10
DoSome_1
Next i
End Sub

Private Sub DoSome_1()
Dim i as Long, k As Long
For i = 1 To 10
k = k + 1
Next i
End Sub

Das ergibt zwar keinen Fehler, aber ich frage mich immer, ob eine
Variable tatsàchlich gekapselt ist in einer Sub (oder Funktion, oder oder)?
Also:
Kann bei Bsp. B) vllt. irgendwas "durcheinander" kommen bezgl. der
Variable i ?



wenn da etwas "durcheinander" kommen würde, dann hàtten das tausende
Entwickler bereits mitbekommen. Da Variable i in beiden Prozeduren lokal
deklariert wurde, sind nun zwei unterschiedliche Variablen i entstanden,
da sie mit verschiedenen Speicherbereichen im stack angelegt wurden. Die
Speicherbereiche werden nach dem Beenden der Prozedur auch wieder zur
Verwendung freigegeben.

Es ist logischerweise essentiell, dass VB sein Versprechen einhàlt und i
völlig unabhàngig voneinander in mehreren geschachtelt aufgerufenen
Prozeduren bearbeitet werden kann.

Was allerdings das Bsp. A mit Bsp. B zu tun haben soll, verstehe ich
nicht, da sich bei A ja schon der Compiler zu Wort meldet.

Gruß,

Christian

Ähnliche fragen