Mehrdimensionales-Queue

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RushDen.

    Mehrdimensionales-Queue

    Ich komme an einem Thema mal wieder nicht weiter.

    Um verschiedene Diagramme mit verschiedenen Serien auffüllen zu können möchte ich gerne die Queue Funktion nutzen.
    Als 1-dimensonales Queue geht das auch super, schwierig wird es wenn ich mehrdimensionale Queues nutzen möchte:

    VB.NET-Quellcode

    1. Dim strom_queue(,) As Queue(Of Integer)
    2. Dim spannung_queue(,) As Queue(Of Double)


    dann:

    VB.NET-Quellcode

    1. For i = 1 To 300
    2. For i2 = 0 To 19
    3. For i3 = 0 To 4
    4. strom_queue(i3, i2).Enqueue(0)
    5. spannung_queue(i3, i2).Enqueue(i)
    6. Next
    7. Next
    8. Next


    Erst beim Start kommt der Fehler:
    --- Ein Ausnahmefehler des Typs "System.NullReferenceException" ist in WindowsApplication1.exe aufgetreten.

    --- Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    beim Enque

    VB.NET-Quellcode

    1. strom_queue(i3, i2).Enqueue(0)
    Du hast ja auch keine Instanzen der Queues erstellt. Folglich sind die Nothing.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Jou.

    janbronner schrieb:

    Objektinstanz
    Ein Array von solch Objekten erstellst Du in 2 Schritten:
    Zuerst erstellst Du das Feld als solches, dann musst Du jedes Feldelement, das initial Nothing ist, einzeln mit einer neuen Instanz befüllen.
    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!
    Vielen Dank erst mal, so geht es jetzt

    VB.NET-Quellcode

    1. Dim strom_queue As New Queue(Of Integer(,))


    aber: Ich möchte gerne etwas das so aussieht:

    VB.NET-Quellcode

    1. Dim strom_queue1 As New Queue(Of Integer(,))
    2. Dim strom_queue2 As New Queue(Of Integer(,))
    3. Dim strom_queue3 As New Queue(Of Integer(,))
    4. Dim strom_queue4 As New Queue(Of Integer(,))
    5. Dim strom_queue5 As New Queue(Of Integer(,))


    und das natürlich lieber so:

    VB.NET-Quellcode

    1. Dim strom_queue() As New Queue(Of Integer(,))


    Wenn ich aber Versuche das so zu definieren bekomme ich die Fehlermeldung:
    Arrays können nicht mit "New" deklariert werden

    wie mache ich das richtig?
    @TE: ThuCommix' Code macht was ganz anderes als du erwartest - das deklariert nur eine Queue mit Anfangs-Kapazität 5.

    Aber zunächstmal solltest du dich einigen, welchen Datentyp du eigentlich willst:

    janbronner schrieb:

    VB.NET-Quellcode

    1. Dim strom_queue(,) As Queue(Of Integer)

    oder

    janbronner schrieb:

    VB.NET-Quellcode

    1. Dim strom_queue1 As New Queue(Of Integer(,))
    2. Dim strom_queue2 As New Queue(Of Integer(,))
    3. Dim strom_queue3 As New Queue(Of Integer(,))
    4. Dim strom_queue4 As New Queue(Of Integer(,))
    5. Dim strom_queue5 As New Queue(Of Integer(,))
    6. (in ein Array gefasst)
    ?
    Weil Queue(Of Integer)(,) und Queue(Of Integer(,))() sind völlig verschiedene Dinge.

    Letzteres ist ein Array von Queues, und jede Queue ist eine Liste von 2-dimensionalen Integer-Arrays. Du sagst nun zwar, dasses das ist, aber ich kanns eiglich nicht glauben.

    Evtl. tust du auch kund, was du damit vorhast, denn zu derlei mehrdimensionalen Array-Monstrositäten gibts meist wesentlich bessere Alternativen.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „ErfinderDesRades“ ()

    janbronner schrieb:

    Ich möchte gerne
    Male mal ein Bildchen, wie die Q's zueinander liegen sollen.
    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!
    es geht um eine überwachung von bis zu 80 einzelnen stromquellen.

    jede hat zwei werte , strom und spannung.
    die werte können in einem chart dargestellt werden, da das chart ein art werteschreiber werden soll muss immer der neuste wert rein, dafür dann der älteste wieder raus.

    ich habe so etwas bereits für ein einzelnes gerät umgesetzt, jetzt soll es mehrfach als custom control kopiert und mit werten beschrieben werden.

    deshalb wird das queue in etwa so aus

    VB.NET-Quellcode

    1. dim strom-queue as new queue(of integer(,))(80)


    p.s. rod und der erfinder haben mir letztes mal schon geholfen, danke für euren einsatz