Variablenübergabe bei Funktionsaufruf (doofe überschrift)

  • Hallo,
    weiß einer eine Möglichkeit ob man die Variable die vor einem Funktionsaufruf in die gestartete Funktion bekommen kann?!? Hört sich wieder Fonfus an, aber ich meine sowas:

    [autoit]

    Func Test($Base, $New)
    $_Temp = DllCall($S_DLL, "long", "Get", "long", $Base, "long", $New)
    return $_Temp[0]
    endfunc

    [/autoit][autoit][/autoit][autoit]

    $RGB = 0xffffff ; Beispiel Standart-Wert
    $New = 0x666666 ; ein anderer Wert
    $RGB1 = Test($RGB1, $New) ; so isses
    $RGB2 = Test($New) ; so will ich´s
    ; jetzt will ich aber einen anderen Wert ändern und muss immer so machen:
    $ABCDEFGHIJKLMNOPQRSTUVW[$ABCDEFGH][$IJKLMNOP] = Test($ABCDEFGHIJKLMNOPQRSTUVW[$ABCDEFGH][$IJKLMNOP], $New)
    ; ...aber so ist doch viel besser:
    $ABCDEFGHIJKLMNOPQRSTUVW[$ABCDEFGH][$IJKLMNOP] = Test($New)
    ; ...

    [/autoit][autoit][/autoit][autoit][/autoit]


    Die function braucht eh immer den ersten Wert und soll einen neuen Wert an die gleiche Variable zurückgeben, nur der zweite Wert soll in die Funktion übergeben werden damit ich nicht ständig diese doppelten Variablenbezeichnungen beim Funktionsaufruf habe.
    Ich kenn ja z.B. 'func test(byRef $Test)' geht so etwas nicht auch mit der Variable die VOR dem Funktiosaufruf steht? Normalerweise könnt man diese Variable ja über Global verfügbar machen, aber da ich nicht weiß welche Variable jetzt da genau steht (ändert sich ja ständig) geht da auch nicht... ?(

    ...Ich hoff ihr versteht mich, und könnt mir helfen :whistling:

  • du könntest höchstens die Base Variable beim erstellen/ändern immer an die selbe adresse speichern und in deiner funktion test darauf zugreifen.
    Was anderes fällt mir auch nicht ein und obs das wert is nur wegen bissl schreibaufwand :P

  • Hi Techmix,

    Wie wäre es denn wenn du die Variablen in der Funbktion tauscht und die zweite dann mit deiner (globalen) Variable belegst.
    Wenn die sich nicht ändert wird sie ohne nachfragen übernommen.

    [autoit]


    Func Test( $New, $Base = $RGB)
    $_Temp = DllCall($S_DLL, "long", "Get", "long", $Base, "long", $New)
    return $_Temp[0]
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Global $RGB = 0xffffff
    $New = 0x666666

    [/autoit][autoit][/autoit][autoit]

    $RGB2 = Test($New)

    [/autoit]

    Bin mier bei der Globalen Variablendekjlaration aber nicht sicher, ob die zwingend ist ?(

    Der Strahleman 8)

    Wenn denn alles so einfach wäre wie

    [autoit]

    "Autoit"

    [/autoit]

    meine UDFs
    Math2

    Wichtige Threads
    Math2

  • Es geht hier aber knapp um die 50 Funktionen die ich so gerne ändern würde. Also der Schreibaufwand ist auch zweitrangig, es geht mir eher darum die Technik der betroffenen Funktionen zu vereinfachen!

    Grüsse!

  • Oki!
    Ich dacht bloß das es vielleicht noch eine andere Möglichkeit gibt dieses zu lösen, schade! Ich denke aber das würde helfen, weil es dann logischer ist; Erst die Zielvariable und anschliessend die Funktion anzugeben ''$RGB1 = Test($New) statt nur einen Funktionsaufruf worin eben beide Variablen enthalten sind 'Test($RGB, $New)'.
    Das würde das Handling mit manchen Funktionen enorm erleichtern...

    Grüsse!