Rückgabewert Function und Type List as variant

  • Hi,


    Hat jemand eine Idee, wie man an die aufrufende Funktion
    'ne Variable vom Type List as variant zurückliefern kann?


    Klar, geht auch anderes, wäre aber schön, wenn ich den "List as variant" in 'ner Funktion (--> wird an mehreren Stellen verwendet)
    berechnen kann.


    Mein Anwendungsbeispiel:


    Im Postopen die Werte von bestimmten Feldern merken und
    im Querysave prüfen, ob sich da Werte geändert haben.


    Die Function sieht ungefähr so aus:


    Function set_lstfield(doc as NotesDocument) as variant
    Dim item as Notesitem
    Dim Werte List as Variant
    Dim feldnamen(20) as string


    feldnamen(0) = "feldnamex"
    feldnamen(1) = "feldnamey"
    feldnamen(2) = "feldnamez"


    Forall itemname in feldname
    if not itemname = "" then
    set item = doc.GetFirstitem(itemname)
    If not item is nothing then
    'alle werte in die Liste schreiben
    werte(itemname) = item.values
    else
    ' Feld kommt nicht vor!!
    end if
    end if
    End forall



    set_lstfield = werte
    End Function



    werte sieht ungefähr so aus
    -werte
    - felnamex
    (0) ["feldwertx"]
    - felnamey
    (0) ["erster Wert feldwerty"]
    (1) ["zweiter Wert feldwerty"]
    - felnamez
    (0) ["feldwertz"]





    Ja, und set_lstfield = werte geht natürlich wegen nem TypeMismatsch nicht....


    P.S.:
    Wie bekommt man den Code ordentlich eingerückt hin?
    blanks werden offensichlich hier im Forum rausgetrimmt.

  • Zitat


    Variant kann so ziemlich alles sein.
    Wenn du in der Funktion die Variable die du zurückgibst als List
    definierst, dann ist der Rückgabewert bei Definition als Variant
    ebenfalls eine List


    Stimmt schon. Nur wie gesagt:
    Die Zuweisung Type Variant = Type List as variant
    führt zur Fehlermeldung "Type Missmatch".


    List as variant kann man einer Function als Rückgabewert nicht zuweisen, und Dim Werte as variant funktioniert auch nicht.
    Irgendwo muss da ein Fehler drin stecken oder kann man
    per Script keinen List Array zurückgeben?

  • Hi,


    Leider ist das nicht, was ich brauche, in ähnlicher Form funktioniert
    ja die zuweisung auch.
    Allerdings führt in Deinem Beispiel
    Liste("abc") = "wert1"
    zum Fehler "Variant does not contain a container". Muß schon als
    Dim Liste LIST as variant deklariert werden.


    Was ich brauche ist, dass "abc" mehrere Werte haben kann.
    Liste sollte also so aussehen:


    Liste("abc")(0) = "wert1"
    Liste("abc")(1) = "wert2"
    Liste("def")(0) = "wert3"


    (siehe mein Beispiel).
    Ja, und die Zuweisung von einer solchen als
    Dim Liste LIST as variant Variablen an eine variable vom Typ
    variant bekomme ich nicht hin. Da kommt dann der Fehler
    "Type Missmatch".


    So langsam regt sich bei mir der Verdacht, dass eine Unterfunktion die von mir angegeb. beispielvariable nicht an die
    aufrufende Funktion zurückliefern kann?!

  • Was du hier machst ist keine Liste mehr sondern ein zweidimensionaler Array.
    Eine Liste zurückliefern funktioniert so wie ich es aufgeführt habe.


    Du versuchst hier eine Liste mit einem Array zu kreuzen, was meines Wissens nach so nicht geht.


    Was du machen kannst ist erst den Array aufbauen und diesen dann dem Listenelement zuzuweisen:


    Function Test As Variant
    Dim Liste List As String
    Dim Array As Variant

    Redim Array(0 To 1)
    Array(0) = "Wert1"
    Array(1) = "Wert2"

    Liste("abc") = Array

    Test = Liste
    End Function