• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

mehrere rückgabe werte aus einer funktion in vb

DeletedUser63197

Gast
wollte mal fragen wie ich in visual basic mehrere rückgabe werte hin bekomme??

einen bekomme ich ja hin durch das setzen des funktionsnamens
aber wenn ich jetzt nioch 2 weitere werte aus der funktion in die nächst höhere ebne holen will wie mach ich das??

kenn das nur von c++ da macht man das mit zeigern aber von vb hab ich kein plan...

danke schonmal im vorraus..
 

DeletedUser

Gast
Grundsätzlich kann man nur einen Wert zurückgeben und das ist in jeder mir bekannten Sprache so.

Wenn du mehrere Werte hast, packst du sie eben in eine Struktur, ein Array oder sonstwas zusammen.

Beispiel für VB.NET:
Code:
    Private Class VieleWerte
        Public Wert1 As String
        Public Wert2 As Integer
        Public Wert3 As Boolean
    End Class

    Private Function MachWas() As VieleWerte
        ' ...hier wird hart gearbeitet...
        Dim w1 As String = "blablubb"
        Dim w2 As Integer = 123
        Dim w3 As Boolean = True
        Dim w As New VieleWerte
        w.Wert1 = w1
        w.Wert2 = w2
        w.Wert3 = w3
        Return w
    End Function

Ob das so in VBA auch geht, weiß ich nicht. Kann VBA überhaupt schon Klassen? Wenn nciht, müsste es wohl mit "Type" gehen anstelle von "Class".
Ansonsten könntest du auch ein String-Array zurückgeben, dann müssen aber alle Werte Strings sein.
 

DeletedUser63197

Gast
ok danke poncho
für meine zwecke reicht diese lösung völlig

aber was ich vorher meinte mit den zeigern iss ne andere ranngehens weise
wie folgt:
function mir egal(adresse des wertes1,adresse des wertes2,.....)

und wenn man dann die werte auf der adresse ändert sind die werte natürlich auch in der höheren ebene (übergestellte funktion) verändert

also gibt es auch solche adress operatoren in vb??
brauch ich jetzt noch nicht aber es zuwissen kann ja nicht schaden da
sie oft mehr sinn machen als nur mit den werten zu arbeiten da wenn man mit großen datenmengen arbeitet muss man nicht mehr die ganzen daten übergeben sondern nur die adressen auf die daten
 

DeletedUser

Gast
Ja, in VB.NET geht das so:

Code:
    Private Sub MachWas(ByRef Wert As String)
        Wert = "blubb"
    End Sub

    'und so gehts:
    Dim test As String = "bla"
    MachWas(test)
    'test ist jetzt "blubb"
Mit ByVal wird nur der Wert übergeben und mit ByRef eine Referenz (so ähnlich wie Zeiger in C).
 

DeletedUser63197

Gast
soo jetzt hab ich ein problem mit dem benutzer definierten typ
der sieht grob soo aus:
Code:
Type Truppen
Schwert as double
speer as double
.
.
.
end type

das problem is das ich diesen Typ einmal als argument in ner funktion übergeben will also:
Code:
function Test1(a as Truppen)

und anderer seits in dieser funktion dann die veränderten werte wieder zurück geben:
Code:
Test1=a

nur sagt er mir dann einerseits wenn ich den typ außerhalb eine funktion deklariere:
Nur öffentliche, benutzerdefinierte Typen, die in öffentlichen Objektmodulen definiert sind, können als Parameter oder Rückgabetypen für öffentliche Prozeduren von Klassenmodulen oder als Felder öffentlicher, benutzerdefinierter Typen verwendet werden

oder wenn ich das dann in einer funktion deklariere:
Benutzerdefinierter Typ nicht definiert

also meine frage wie/wo muss ich den definieren das es klappt sehe mit diesem öffentlich und privat oder soo nicht wirklich durch
 
Oben