1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

beliebig viele Optionale Argumente in VB.net

Discussion in 'Programmieren' started by qutx, Jan 1, 2009.

Thread Status:
Not open for further replies.
  1. qutx

    qutx Byte

    Hallo,
    ich habe folgendes Problem:
    Ich möchte eine Funktion schreiben, der man beliebig viele Argumente (oder als Default-Wert nur eines, nämlich den String "STRING_UNDEFINED") übergeben kann ("Arguments") und gehe dabei wie folgt vor:

    Private Function Calculate (ByVal OpID As Long, _
    Optional ByVal LeftSide As String = STRING_UNDEFINED, _
    Optional ByVal RightSide As String = STRING_UNDEFINED, _
    Optional ByVal Arguments() As String = {STRING_UNDEFINED} _
    ) As String


    Beim Kompillieren bekomme ich jedoch immer die Fehlermeldung "Ausdruck erwartet. (BC30201)" für meine Arrayzuweisung...

    Ich bin mit meinem Latein am Ende... Was mache ich falsch?

    Gruss + danke im vorraus,

    qutx
     
  2. AS_X

    AS_X Halbes Megabyte

    Versuch mal das Schlüsselwort ParamArray einzubauen, also etwa so:
    Code:
    Optional ByVal [B]ParamArray[/B] Arguments() As String = [B]Nothing[/B]
    Der Defaultwert eines Arrays kann laut Spezifikation nur Nothing sein.

    Ich weiß natürlich nicht, ob das so funktioniert. Aber viel Erfolg dabei - eine Rückmeldung wäre nett.
     
  3. qutx

    qutx Byte

    Hallo, danke für den Tip!
    Hab es mit ParamArray versucht, leider lässt sich ParamArray nicht mit Optional kombinieren, und Optional und ParamArray dürfen auch nicht gleichzeitig verwendet werden.

    Ich werde 'Arguments', jetzt einfach als String übergeben und erst in der Funktion mit Split zerlegen:

    Private Function Calculate (ByVal OpID As Long, _
    Optional ByVal LeftSide As String = STRING_UNDEFINED, _
    Optional ByVal RightSide As String = STRING_UNDEFINED, _
    Optional ByVal Arguments As String = STRING_UNDEFINED _
    ) As String


    Ich glaube das ist das einfachste... Die Funktion zu überladen bringt ja nicht wirklich etwas, da es zu viele verschiedene Fälle gäbe. Oder hat jemand noch eine Idee?

    Danke + Frohe neues Jahr!
     
  4. qutx

    qutx Byte

    Bzw, das ganze Als Optionales Array ginge auh:

    Private Function Calculate (ByVal OpID As Long, _
    Optional ByVal LeftSide As String = STRING_UNDEFINED, _
    Optional ByVal RightSide As String = STRING_UNDEFINED, _
    Optional ByVal Arguments() As String = Nothing _
    ) As String
     
  5. AS_X

    AS_X Halbes Megabyte

    Alles klar: Du müsstest quasi alle Parameter ins ParamArray tun oder keiner der Parameter darf optional sein.
     
    Last edited: Jan 4, 2009
Thread Status:
Not open for further replies.

Share This Page