Problem mit Microsoft.VisualBasic.Collection

  • Allgemein

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ccc.

    Problem mit Microsoft.VisualBasic.Collection

    Ich habe folgende Sub definiert:

    Quellcode

    1. Sub trennen(ByVal old As Integer, ByVal anschlag As Double)
    2. Dim ws_old As ws1
    3. ws_old = eing_puffer.Item(old)
    4. ws_old.laenge = Math.Max(0, ws_old.laenge - anschlag)
    5. ws_old.status = "rest"
    6. ausg_puffer.Add(ws_old)
    7. MsgBox(ws_old.name & " " & CStr(ws_old.laenge) & " " & ws_old.status) '==> liefert 1 20 rest '(Name Länge Status)
    8. ws_old = eing_puffer.Item(old)
    9. ws_old.laenge = Math.Max(ws_old.laenge, anschlag)
    10. ws_old.status = "gut"
    11. ausg_puffer.Add(ws_old)
    12. MsgBox(ws_old.name & " " & CStr(ws_old.laenge) & " " & ws_old.status) '==> liefert 1 40 gut '(Name Länge Status)
    13. End Sub


    eing_puffer und ausg_puffer sind als Microsoft.VisualBasic.Collection definiert.

    Diese Sub nimmt ein Objekt aus dem Eingangspuffer, "trennt" dieses und legt zwei Objekte in den Ausgangspuffer.

    Angezeigt wird das ganze dann über den folgenden Code:

    Quellcode

    1. For Each oneInst As ws1 In saege.ausg_puffer
    2. nameList &= oneInst.name & " " & Str(oneInst.laenge) & " " & oneInst.status & vbCrLf
    3. Next oneInst
    4. MsgBox("Name" & " " & "Länge" & " " & "Status" & Chr(10) & _
    5. nameList, , "Objekte im Ausgangspuffer")


    Eigentlich sollte in der Msgbox dann folgendes stehen (für ein entnommenes Objekt aus dem Eingangspuffer):

    Name Länge Status
    1 20 rest
    1 40 gut

    Drin steht aber:

    Name Länge Status
    1 40 gut
    1 40 gut

    Wie es aussieht, wird den Objekten im Ausgangpuffer jeweils die letzte Länge und der letzte Status zugewiesen, obwohl ich mit "ausg_puffer.Add(ws_old)" beides einer Microsoft.VisualBasic.Collection zuweise. Und sofern ich die Collection richtig verstanden habe, speichert diese die Werte als Collection, die man ihr übergibt.

    Was ist hier falsch? Irgendjemand eine Idee?

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