VBS: Mehrere Rückgabewerte einer Funktion -. Wie geht das?
Hallo an alle Forenteilnehmer,
wie kann ich einer VBS-Funktion mehrere Rückgabeparameter liefern lassen.
Hinergrund:
Habe eine VBS-Funktion geschrieben, die den Standort, die Stadt etc. aus den OUs liest.
Übergabeparameter sind keine
Rückgabeparameter sind vier String-Variablen.
Bei einer einzelnen Variable weiß ich das?
Muss ich das evtl. über ein Rückgabe-Array lösen?
Wenn ja, was muss ich in meiner Funktion wie schreiben und was in meinem Hauptprogramm?
Vielen Dank im Voraus!
Thomas
wie kann ich einer VBS-Funktion mehrere Rückgabeparameter liefern lassen.
Hinergrund:
Habe eine VBS-Funktion geschrieben, die den Standort, die Stadt etc. aus den OUs liest.
Übergabeparameter sind keine
Rückgabeparameter sind vier String-Variablen.
Bei einer einzelnen Variable weiß ich das?
Muss ich das evtl. über ein Rückgabe-Array lösen?
Wenn ja, was muss ich in meiner Funktion wie schreiben und was in meinem Hauptprogramm?
Vielen Dank im Voraus!
Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 207778
Url: https://administrator.de/forum/vbs-mehrere-rueckgabewerte-einer-funktion-wie-geht-das-207778.html
Ausgedruckt am: 22.12.2024 um 09:12 Uhr
16 Kommentare
Neuester Kommentar
Hier wird der Umgang mit Arrays in VBScript ausführlich erklärt.
Hallo thl1966 und SlainteMhath!
Nur als Anmerkung: Natürlich ist die Verwendung einer
Grüße
bastla
P.S.: @ thl1966: Magst Du nicht auch Deine Codeschnipsel passend hier)?
Nur als Anmerkung: Natürlich ist die Verwendung einer
Function
die elegantere und programmiertechnisch zu bevorzugende Variante - einfacher ginge es aber mit einem Sub
: Da in VBS ja alle Variablen global sind, genügt es, die benötigten Variablen vor dem Aufruf des Sub
zu deklarieren / initialisieren, und sie dann im Sub
mit den Werten zu befüllen ...Grüße
bastla
P.S.: @ thl1966: Magst Du nicht auch Deine Codeschnipsel passend hier)?
Hallo thl1966!
Das Array ist unnötig - Du kannst unmittelbar auf "strStandortLand" etc zugreifen, wenn es die Variable(n) vor dem Aufruf der
Grüße
bastla
P.S.: Ich hoffe, die Tatsache, dass Dein geposteter Code noch immer keine passende Formatierung aufweist, liegt nicht an daran, dass Dich das Verwenden von <code>- / </code>-Tags überfordert ...
Das Array ist unnötig - Du kannst unmittelbar auf "strStandortLand" etc zugreifen, wenn es die Variable(n) vor dem Aufruf der
Function
/ des Sub
im Hauptprogramm bereits gibt ...Grüße
bastla
P.S.: Ich hoffe, die Tatsache, dass Dein geposteter Code noch immer keine passende Formatierung aufweist, liegt nicht an daran, dass Dich das Verwenden von <code>- / </code>-Tags überfordert ...
Hallo zusammen!
Der Vollständigkeit halber noch die Luxusvariante
Gruß Dieter
Der Vollständigkeit halber noch die Luxusvariante
Class StandortDaten
Public Land
Public LandName
Public Stadt
Public StadtName
End Class
Call Test
Sub Test()
With GetStandortDaten()
MsgBox .Land
MsgBox .LandName
MsgBox .Stadt
MsgBox .StadtName
End With
End Sub
Function GetStandortDaten()
Set GetStandortDaten = New StandortDaten
With GetStandortDaten
.Land = "Ein Land"
.LandName = "Ein LandName"
.Stadt = "Eine Stadt"
.StadtName = "Ein StadtName"
End With
End Function
Gruß Dieter
...und damit wir wirklich komplett sind: Es gibt auch noch die Möglichkeit, die Parameter einer Function/Sub als
Stichwort: Call by Reference
Gruß
Friemler
ByRef
zu deklarieren:Sub Test(ByRef strStandortStadt, ByRef strStandortStadtName, ByRef strStandortLand, ByRef strStandortLandName)
strStandortStadt = "ABC"
strStandortStadtName = "DEFG"
strStandortLand = "USA"
strStandortLandName = "ASU"
End Sub
Stichwort: Call by Reference
Gruß
Friemler
und damit wir ganz, ganz, ganz komplett sind (um @friemlers Schlusswort noch zu toppen)...
Wenn du eine Function brauchst mit mehreren Rückgabewerten, dann überprüfe deinen Programmfluss und deine unterstellte Programmlogik.
Da muss ein (Denk-)fehler enthalten sein.
Wenn vermeintlich die Notwendigkeit für "mehrere Rückgabewerte" gegeben zu sein scheint, dann ist es (wenn die jeweilige Programmiersprache es zulässt) über "globale Variablen" lösbar - wa im Falle VBS ja keinen Rückschritt bedeutet (siehe bastlas Kommentar oben).
Friemlers Hinweis auf "ByRef"-Parameter-Übergabe ist auch okay, aber grundsätzlich führt diese Programmierung sehr schnell dazu, dass ganz schnell aus den oben beschriebenen 4 "Rückgabewerten" dann 4 plus ein Returnwert für "erfolgreich/Fehler" plus einen für den Fehlertext und einer für den Schweregrad des Errors...usw werden.
Versuche, dich auf einen Rückgabewert einer Funktion zu beschränken.
Grüße
Biber
Wenn du eine Function brauchst mit mehreren Rückgabewerten, dann überprüfe deinen Programmfluss und deine unterstellte Programmlogik.
Da muss ein (Denk-)fehler enthalten sein.
Wenn vermeintlich die Notwendigkeit für "mehrere Rückgabewerte" gegeben zu sein scheint, dann ist es (wenn die jeweilige Programmiersprache es zulässt) über "globale Variablen" lösbar - wa im Falle VBS ja keinen Rückschritt bedeutet (siehe bastlas Kommentar oben).
Friemlers Hinweis auf "ByRef"-Parameter-Übergabe ist auch okay, aber grundsätzlich führt diese Programmierung sehr schnell dazu, dass ganz schnell aus den oben beschriebenen 4 "Rückgabewerten" dann 4 plus ein Returnwert für "erfolgreich/Fehler" plus einen für den Fehlertext und einer für den Schweregrad des Errors...usw werden.
Versuche, dich auf einen Rückgabewert einer Funktion zu beschränken.
Grüße
Biber
Zitat von @Biber:
...dass ganz schnell aus den oben beschriebenen 4 "Rückgabewerten" dann 4 plus ein Returnwert für
"erfolgreich/Fehler" plus einen für den Fehlertext und einer für den Schweregrad des Errors...usw werden.
...dass ganz schnell aus den oben beschriebenen 4 "Rückgabewerten" dann 4 plus ein Returnwert für
"erfolgreich/Fehler" plus einen für den Fehlertext und einer für den Schweregrad des Errors...usw werden.
Falls aber der erste Parameter NULL ist, wird der zweite Parameter als Pointer auf eine SubSite-Structure interpretiert, über die...
Woher kenne ich das bloß?
Gruß
Friemler