Vb Script. Unterschied zwischen public und dim
Hallo,
was ist denn der Unterschied in vbs, ob ich eine Variable mit DIM oder mit PUBLIC deklariere?
Grundsätzlich ist mir schon klar, dass es einen Unterschied macht, wo man eine Variable deklariert.
In diesem Beispiel enthält die Variable myVar nur innerhalb der SUB einen Wert:
In diesem Beispiel enthält die Variable myVar innerhalb und ausserhalb der SUB einen Wert:
Aber wenn ich PUBLIC anstatt DIM verwende, erhalte ich das gleiche Ergebnis:
Hier wird der Gültigkeitsbereich von DIM und PUBLIC erklärt:
http://gs-electronics.nl/comp-html/vbsdocs/vbs569.htm
http://gs-electronics.nl/comp-html/vbsdocs/vbs589.htm
DIM = Variablen, die mit Dim auf Skriptebene deklariert wurden, stehen allen Prozeduren des Scripts zur Verfügung.
PUBLIC = Variablen, die mit der Public-Anweisung deklariert wurden, sind in allen Prozeduren, Skripten und Projekten
Bei VBA ist das ja ein Unterschied, aber was bedeutet bei einem vb-Script "...Skripten und Projekten..."?
Danke
Gruß
Martin
was ist denn der Unterschied in vbs, ob ich eine Variable mit DIM oder mit PUBLIC deklariere?
Grundsätzlich ist mir schon klar, dass es einen Unterschied macht, wo man eine Variable deklariert.
In diesem Beispiel enthält die Variable myVar nur innerhalb der SUB einen Wert:
MeineSub
WScript.Echo "Variable myVar ausserhalb der SUB: " & myVar
Sub MeineSub
DIM myVar
myVar = "a"
WScript.Echo "Variable myVar innerhalb der SUB: " & myVar
End Sub
In diesem Beispiel enthält die Variable myVar innerhalb und ausserhalb der SUB einen Wert:
DIM myVar
MeineSub
WScript.Echo "Variable myVar ausserhalb der SUB: " & myVar
Sub MeineSub
myVar = "a"
WScript.Echo "Variable myVar innerhalb der SUB: " & myVar
End Sub
Aber wenn ich PUBLIC anstatt DIM verwende, erhalte ich das gleiche Ergebnis:
PUBLIC myVar
MeineSub
WScript.Echo "Variable myVar ausserhalb der SUB: " & myVar
Sub MeineSub
myVar = "a"
WScript.Echo "Variable myVar innerhalb der SUB: " & myVar
End Sub
Hier wird der Gültigkeitsbereich von DIM und PUBLIC erklärt:
http://gs-electronics.nl/comp-html/vbsdocs/vbs569.htm
http://gs-electronics.nl/comp-html/vbsdocs/vbs589.htm
DIM = Variablen, die mit Dim auf Skriptebene deklariert wurden, stehen allen Prozeduren des Scripts zur Verfügung.
PUBLIC = Variablen, die mit der Public-Anweisung deklariert wurden, sind in allen Prozeduren, Skripten und Projekten
Bei VBA ist das ja ein Unterschied, aber was bedeutet bei einem vb-Script "...Skripten und Projekten..."?
Danke
Gruß
Martin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 619781
Url: https://administrator.de/contentid/619781
Ausgedruckt am: 24.11.2024 um 04:11 Uhr
11 Kommentare
Neuester Kommentar
was ist denn der Unterschied in vbs, ob ich eine Variable mit DIM oder mit PUBLIC deklariere?
Heutzutage noch VBS?
Der Unterschied wird erst bei der Verwendung von Klassen zum Tragen kommen.
Hallo,
Leider gibt es das. Ca. 80% der Formulare unserer Verwaltungssoftware sind VBS. Ich habe gerade letzte Woche im hintersten Bücherregal ein VBS-Buch suchen müssen, das ich dort vor 20 Jahren! hingestellt hatte.
Grüße
lcer
Leider gibt es das. Ca. 80% der Formulare unserer Verwaltungssoftware sind VBS. Ich habe gerade letzte Woche im hintersten Bücherregal ein VBS-Buch suchen müssen, das ich dort vor 20 Jahren! hingestellt hatte.
Grüße
lcer
Zitat von @AlbertMinrich:
Hallo,
was ist denn der Unterschied in vbs, ob ich eine Variable mit DIM oder mit PUBLIC deklariere?
Hallo,
was ist denn der Unterschied in vbs, ob ich eine Variable mit DIM oder mit PUBLIC deklariere?
Hi,
Grundsätzlich sind bei VBS alle Variablen Public, wenn sie außerhalb einer Methode bzw. einer Funktion stehen.
Übrigends ist das auch in PS der Fall.
Grüße!
Zitat von @AlbertMinrich:
OK, danke. Das heißt dann, es gibt keinen Unterschied.
Gruß
Martin
Zitat von @mayho33:
Hi,
Grundsätzlich sind bei VBS alle Variablen Public, wenn sie außerhalb einer Methode bzw. einer Funktion stehen.
Zitat von @AlbertMinrich:
Hallo,
was ist denn der Unterschied in vbs, ob ich eine Variable mit DIM oder mit PUBLIC deklariere?
Hallo,
was ist denn der Unterschied in vbs, ob ich eine Variable mit DIM oder mit PUBLIC deklariere?
Hi,
Grundsätzlich sind bei VBS alle Variablen Public, wenn sie außerhalb einer Methode bzw. einer Funktion stehen.
OK, danke. Das heißt dann, es gibt keinen Unterschied.
Gruß
Martin
Doch! Wenn eine Variable innerhalb einer Funktion deklariert ist, ist sie nur da gültig. Ist eine Variable außerhalb deklariert ist sie global also im ganzen Script gültig.
Doch! Wenn eine Variable innerhalb einer Funktion deklariert ist, ist sie nur da gültig. Ist eine Variable außerhalb deklariert ist sie global also im ganzen Script gültig.
Noch ein kleiner Zusatz:
Mit "Associated script" ist, wie in dem von dir genannten Link wohl gemeint, das eingebundene Scripts ebenfalls diese Variable nutzen können.
Das ist aber eher Nonsence. Besser ist es eine Inc-Datei zu erstellen (normales Vbs aber die Dateiendung auf Inc umbenannt) und diese in dein Main-Script einzubinden.
Das macht man hauptsächlich um die Übersichtlichkeit zu verbessern und um Funktionen wieder verwenden zu können ohne sie erneut im Vbs zu erstellen.
Zitat von @AlbertMinrich:
Die Frage war, was ist der Unterschied zwischen DIM und PUBLIC und hier gibt es offenbar keinen, zumindest bei vbs.
Na doch, Du musst schon alle Zeilen aller Kommentare lesen!Die Frage war, was ist der Unterschied zwischen DIM und PUBLIC und hier gibt es offenbar keinen, zumindest bei vbs.
Wenn am in VBS Klassen erstellt und in diesen Klassen auf "Klassen-Ebene" Variablen deklariert, dann machte es sehr wohl einen Unterschied, ob man diese mit Public oder einfach nur mit Dim deklariert. Probiere es einfach aus.
Zitat von @AlbertMinrich:
OK, danke. Das heißt dann, es gibt keinen Unterschied.
Zitat von @mayho33:
Hi,
Grundsätzlich sind bei VBS alle Variablen Public, wenn sie außerhalb einer Methode bzw. einer Funktion stehen.
Zitat von @AlbertMinrich:
Hallo,
was ist denn der Unterschied in vbs, ob ich eine Variable mit DIM oder mit PUBLIC deklariere?
Hallo,
was ist denn der Unterschied in vbs, ob ich eine Variable mit DIM oder mit PUBLIC deklariere?
Hi,
Grundsätzlich sind bei VBS alle Variablen Public, wenn sie außerhalb einer Methode bzw. einer Funktion stehen.
OK, danke. Das heißt dann, es gibt keinen Unterschied.
Wie ich bereits schrieb, gibt es natürlich einen Unterschied.
Hmpf... Auch für Members von Klassen gilt das "public by default". Das Private Keyword ist da schon interessanter
Steffen
Option Explicit
Class Test
Public a
Dim b
Private c
End Class
Dim obj
Set obj = New Test
obj.a = "Hello " ' OK
obj.b = "World!" ' OK
' obj.c = "foo" ' Error
WScript.Echo obj.a & obj.b
Set obj = Nothing