Funktionen

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von Gonger96.

    Huhu :)

    ich weis nich wie man des nennt sonst hätte ich danach gegoogelt es kommt aber nur kauldawelsch wenn ich des gerade suche.

    Ich will in meiner neuen funktion sagen Variable A - C sind pflichtvariablen und D - F bei bedarf wenn z.b. D definiert wird oda so.

    hoffe ihr versteht was ich meine ich versuchs mal deutlicher zu beschreiben

    funktion rechnen (byval a as integer, byval b as integer,byval art as string) <- standard funktion alle 3 werte MÜSSEN richtig definiert sein (wird über abfrage nochmal in der funktion überprüft ob richtig

    funktion rechnen (byval a as integer, byval b as integer,byval art as string,byval kommastellen as boolean,kommastellen as integer) <- kommastellen wurde als funktion zusätzlich angegeben deshalb wird als pflicht auch die variable kommastellen :)

    wenn ihrs nicht verstanden habt versuch ichs nochmal anders zu erklären.

    danke für eure hilfe und nen schönen tag in die neue woche :) ^^
    hast du mir ein kleines beispiel vllt verstehs noch nich so ganz wie ich dann die 2te variable mit der 1sten akls pflicht machen kann würde des etwa so dann reichen?

    Quellcode

    1. unktion rechnen (byval a as integer, byval b as integer,byval art as string,optional byval kommastellen as boolean,kommastellen as integer)


    das nur wenn kommastellen halt auch ausgewählt wird die abfrage kommastellen angezeigt und ausgewählt werden muss.

    lg und danke schonmal
    Das Problem bei der Sache....

    Quellcode

    1. Function Umechnen(ByVal a As Integer, ByVal b As Integer, ByVal art As String, Optional ByVal kommastellen As Boolean = False)

    .. ist, das man nur EINEN Optionalen Parameter angeben kann.

    Du kannst nun z.B. Generell immer die Nachkommestellen mitschicken (z.B. dann Wert= 0 wenn es keine sein soll) und diese dann in der Funktion selbst abfragen,
    oder du machst eine Structur die du übergeben musst.

    Wobei das generelle mitschicken der Kommastelle sicherlich die einfachste Variante ist.

    [Edit]
    Huch... geht ja doch... (wieder was gelernt)

    VB.NET-Quellcode

    1. Function Umechnen(ByVal a As Integer, ByVal b As Integer, ByVal art As String, Optional ByVal komma1 As Boolean = False, Optional ByVal komma2 As Boolean = False)
    2. ' Und so wäre dann ein Aufruf, bei dem nur die 2. Stelle mit angegeben wird:
    3. Urechnen(1, 2, "der dritten") ' Ohne KOmma
    4. Urechnen(1, 2, "der dritten", True) ' nur der Ersten Zahl
    5. Urechnen(1, 2, "der dritten", , True) ' nur der 2.
    6. Urechnen(1, 2, "der dritten", True, True) ' beide Zahlen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „RoulettePilot“ ()

    ja sry mein fehler is ja nur ein beispiel aber das man sagt wenn man komma1 setz muss man au komma2 setzen gibt es nicht? theoretisch gesehen also einfach ne 2te funktion schreiben für die sachen :|

    RoulettePilot schrieb:

    Das Problem bei der Sache [...] ist, das man nur EINEN Optionalen Parameter angeben kann.

    Nee, man kann schon mehrere angeben. Dacht' ich auf jeden Fall.
    Also wenn die Funktion wie folgt deklariert wurde:

    VB.NET-Quellcode

    1. Public Function Calculate(ByVal a As Integer,
    2. ByVal b As Integer,
    3. ByVal type As String,
    4. Optional ByVal decimalpoints As Boolean = False,
    5. Optional ByVal optionB As String = String.Empty,
    6. Optional ByVal optionC As Uri = Nothing) As Boolean

    Dann könnte man das ohne Weiteres so aufrufen:

    VB.NET-Quellcode

    1. Dim Success = Calculate(2, 5, "Test", True, optionC:=New Uri("http://www.google.com/")
    Lass den Krampf mit optionalen Parametern, das ist nur verwirrend. Erstell Dir passende Überladungen der Funktion.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Meines Wissens kann man in den Parametern einer Funktion nicht sagen das die zweite Optionale Variable abhängig von der ersten Optionalen Variable ist.
    Optionale Variablen können, müssen aber nicht übergeben werden. Da kann man keine Verbindung zu einer anderen Variablen machen.

    So wie ich Dich verstanden habe brauchst Du eine Funktion die schon beim Funktionsaufruf Dir sagt
    "Hey Vorsicht, Du hast Komma1 gesetzt, musst aber jetzt auch Komma2 setzen!"

    Du musst die Prüfung entweder vor dem Funktionsaufruf machen oder in der Funktion selbst.
    ahhhh ideee :D optional OBJECT :D und im object vordefinieren was ich brauche das würde gehen oder? das wenn ich den optionalen wert nehme zuvor das object von der kalsse als neues object mit den werten definieren muss ^^




    Quellcode

    1. Class CalcClass
    2. dim xxx as object = blablabla halt nen object herstellen wie ichs brauche
    3. Function Umechnen(ByVal a As Integer, ByVal b As Integer, ByVal art As String, Optional ByVal komma As CalcClass.XXX )


    so müste es gehen oder?
    Erklär doch einfach mal, was Du im Grunde vor hast. Ohne Code, einfach den Sinn, denn den kann ich nicht erkennen.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    ich will eine funktion schreiben in der ich gewisse strings weiter geben muss

    der code sieht gerade so aus

    Quellcode

    1. funktion rechnen (byval a as integer, byval b as integer,byval c as string,byval d as boolean,e as integer, byval f as string, byval g as threading.thread)


    so wenn der wert d gesetzt wird brauche ich halt die variablen e f g als plicht wenn nich sind die mir egal weil ich die dann nich benötige weil dann die funktion von variable d nicht durchgeführt werden

    datsspeed schrieb:

    so müste es gehen oder?
    Nein.
    1. Option Strict On
    2. muss ein optionaler Parameter einen Default-Wert zugewiesen bekommen
    3. darf nach einem optionalen Parameter kein Nicht-optionaler Parameter stehen.

    VB.NET-Quellcode

    1. Function Umechnen(ByVal a As Integer, ByVal b As Integer, ByVal art As String, Optional ByVal komma As XXX = Nothing) As Integer
    2. Return 0
    3. End Function
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Quellcode

    1. dim xxx as object = myobjectdefinition
    2. Function Umechnen(ByVal a As Integer, ByVal b As Integer, ByVal art As String, Optional ByVal komma As XXX = Nothing) As Integer
    3. Return 0
    4. End Function

    datsspeed schrieb:

    dim xxx as object = myobjectdefinition
    Nein.

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    2. Dim xxx As New XXX
    3. Dim i = Umechnen(1, 2, "3", xxx)
    4. End Sub
    5. Function Umechnen(ByVal a As Integer, ByVal b As Integer, ByVal art As String, Optional ByVal komma As XXX = Nothing) As Integer
    6. Return 0
    7. End Function
    mit

    VB.NET-Quellcode

    1. Public Class XXX
    2. ' bla
    3. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    bzw wenn ich halt ne structure definiere würde ja au gehen

    hoffe das is dann sauber genug als lösung dann muss ja die struktur zwangsweise angelegt werden bevor es büergeben wird an die eig. funktion

    für die struktur erstellung mach ich auch ne funktion und dann is alles da :)

    danke euch allen ^^

    PS:
    1ster arbeitstag nach urlaub is immer so ne sache xD

    datsspeed schrieb:

    würde ja au gehen
    Hast Du

    RodFromGermany schrieb:

    Option Strict On
    :?:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!