Chart1 clear bringt Fehler

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Chart1 clear bringt Fehler

    Hallo,
    ich habe ein Problem.
    Eine Grafik enthält mehrere Gruppenfelder mit Temperatur und Luftfeuchte Angaben und einem Button "Chart Anzeigen"
    Beim ersten Erstellen werden die Gruppenfelder ordnungsgemäss aufgebaut und der Chart1 ebenso (er enthält die Daten der Gruppe1).
    Wenn man jetzt die Daten vom Gruppe 2 mittels Button aufrufen will, kommt folgende Fehlermeldung:

    Der Index lag außerhalb des Bereiches. Er muss nicht negativ und kleiner als die Auflistung sein.
    Parametername: index

    Der Unterschied zum 1. Aufbau ist ein Chart1.series.clear in der else Abfrage der Variablen "SG"

    VB.NET-Quellcode

    1. Function GraficBauen(ByVal Messpl As Integer) As Boolean
    2. Dim LinienBreite As Integer = 5
    3. Dim SG as Boolean ' Schalter, der ein wiedeholtes Zeichen der Grunddaten verhindert
    4. Try
    5. With (Chart1)
    6. If SG = False Then
    7. .Series(0).Name = "LuftTemp"
    8. .Series(0).ChartType = SeriesChartType.Line
    9. .Series(0).BorderWidth = LinienBreite
    10. .Series(0).Color = Color.CadetBlue
    11. .Series.Add("LuftFeuchte")
    12. .Series(1).ChartType = SeriesChartType.Line
    13. .Series(1).BorderWidth = LinienBreite
    14. .Series(1).Color = Color.Blue
    15. .Series.Add("SubstratTemp")
    16. .Series(2).ChartType = SeriesChartType.Line
    17. .Series(2).BorderWidth = LinienBreite
    18. .Series(2).Color = Color.Aquamarine
    19. .Series.Add("Taupunkt")
    20. .Series(3).ChartType = SeriesChartType.Line
    21. .Series(3).BorderWidth = LinienBreite
    22. .Series(3).Color = Color.Orange
    23. .Series.Add("Differenz")
    24. .Series(4).ChartType = SeriesChartType.Line
    25. .Series(4).BorderWidth = LinienBreite
    26. SG = True
    27. else
    28. .Series.clear()
    29. end if
    30. 'Hier erfolgt das Zeichnen der einzelnen Punkte
    31. Dim k As Integer = 3
    32. For j As Integer = 0 To 48
    33. For s As Integer = 0 To 4
    34. .Series(s).Points.AddXY(DatenArray(j, k, 5), DatenArray(j, k, s))
    35. Next
    36. Next
    37. End With
    38. Return True
    39. Catch ex As Exception
    40. MessageBox.Show(ex.Message)
    41. Return False
    42. End Try
    43. End Function


    Beim ersten Aufruf der .Series(s).Points.AddXY(DatenArray(j, k, 5), DatenArray(j, k, s))
    springt das Programm in den Catch ex...
    und Tschüs.
    Muss ich was auf 0 Stellen oder löschen oder ... ich weiss nicht.
    Danke an alle, die nun mit mir leiden wollen
    Gruß conger890
    Ich schätze mal, dass es das DatenArray(j, k, 5) 3. Index = 5 nicht gibt.
    Wie ist DatenArray() deklariert?
    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!
    ich würd hier erstmal garnix schätzen, sondern nach der genauen Fehlerzeile fragen - mein Standard-Post:
    5 Regeln für sinnvolle Fragen - Fehlerzeile?

    Dabei zeigt sich dann sofort mal wieder der depperte TryCatch als Hindernis, um die Fehlerzeile ühaupt zu ermitteln.

    also: Trycatch wegmachen, und dann die Fehlerzeile angeben - dass man ühaupt weiß, wovon geredet wird.
    @ErfinderDesRades: Steht alles da:

    conger890 schrieb:

    Beim ersten Aufruf der .Series(s).Points.AddXY(DatenArray(j, k, 5), DatenArray(j, k, s))
    springt das Programm in den Catch ex...
    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!
    Danke deiner Frage.
    Das Datenarray(x,y,z) enthält auf pos x 48 Positionen (24 Stunden jede halbe Stunde) auf Position y für 3 Messstationen und der Z Faktor
    enthält Jeweils 0 bis 4 Messwerte, 5 die Uhrzeit (Std) und 6 die Uhrzeit(min) Hier steht nur 0 oder 30 drin, siehe 1,0,6

    (0,0,0) 22.6 Double
    (0,0,1) 42.7 Double
    (0,0,2) 42.7 Double
    (0,0,3) 27.34 Double
    (0,0,4) 15.36 Double
    (0,0,5) 14.0 Double
    (0,0,6) 0.0 Double
    (0,1,0) 22.6 Double
    (0,1,1) 40.7 Double
    (0,1,2) 26.7 Double
    (0,1,3) 12.29 Double
    (0,1,4) 14.41 Double
    (0,1,5) 14.0 Double
    (0,1,6) 0.0 Double
    (0,2,0) 21.8 Double
    (0,2,1) 45.0 Double
    (0,2,2) 20.8 Double
    (0,2,3) 8.48 Double
    (0,2,4) 12.32 Double
    (0,2,5) 14.0 Double
    (0,2,6) 0.0 Double
    (1,0,0) 22.6 Double
    (1,0,1) 42.7 Double
    (1,0,2) 42.4 Double
    (1,0,3) 27.07 Double
    (1,0,4) 15.33 Double
    (1,0,5) 14.0 Double
    (1,0,6) 30.0 Double
    (1,1,0) 22.6 Double
    (1,1,1) 40.7 Double
    (1,1,2) 27.1 Double
    (1,1,3) 12.64 Double
    (1,1,4) 14.46 Double
    (1,1,5) 14.0 Double
    (1,1,6) 30.0 Double
    (1,2,0) 21.8 Double
    (1,2,1) 45.0 Double
    (1,2,2) 20.9 Double
    (1,2,3) 8.57 Double
    (1,2,4) 12.33 Double
    (1,2,5) 14.0 Double
    (1,2,6) 30.0 Double


    Da die Werte für J,K und s in den For..next Schleifen neu festgelegt werden, ist eigentlich alles wie beim ersten Auslesen der Datenarray,
    eigentlich
    Gruß conger890

    RodFromGermany schrieb:

    Wie ist DatenArray() deklariert?

    Dim DatenArray(...) As What
    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!
    HI,
    in der Public Class Form steht
    Dim Datenarray(1,1,1) as double

    Ein paar Zeilen später in Private Sub Form4_Load
    erfolgt dann ein ReDim (ohne as )


    Antwort auf Erfinder des Rades:
    Wer lesen kann, ist echt im Vorteil!
    Nach Entfernung der Try Chatch Kiste kam folgende Fehler Meldung

    siehe Fehler.pnp angehängt

    Wenn ich jetzt auf meinen zuerst geposteten Teil schaue,
    steht da in Zeile 9 / 10
    Der Index lag außerhalb….
    Hier nochmal
    die 5 Regeln für sinnvolle Fragen:
    1. Name der Exception und MeldungsText angeben
    2. Code-Ausschnitt posten
    3. Fehlerzeile angeben
    4. Fehlverhalten angeben
    5. Erwünschtes Verhalten angeben

    zu 1 Siehe Zeile 9 / 10
    zu 2. Code-Abschnitt kann ich erkennen, da vorhanden.
    zu 3 siehe 9/10
    zu 4 Der Hinweis, das Programm springe zum Catch Part ist vielleicht
    nicht ausführlich genug
    zu 5 ergibt sich ja wohl von selbst, oder …. Saubere Abarbeitung des Codes
    bitte bleib sachlich, danke

    gruß conger890
    Bilder
    • Fehler.png

      144,4 kB, 1.512×945, 173 mal angesehen

    conger890 schrieb:

    erfolgt dann ein ReDim (ohne as )
    Zu welchen Grenzen?
    Bilder können auch scharf sein.
    Setz mal auf die Zeile oben einen Haltepunkt, klick auf Datenarray und drück Shift+F9.
    Sieh Dir die angeforderten Index-Werte an und die Dimensionen des Arrays.
    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!
    sorry, ja - lesen ist schon schwierig :whistling:

    jedenfalls: kommt da nur diese Meldung?
    kein Codestop und gelbe Zeile, dass man gucken kann, welche Werte die Indizees haben, wenns crasht?

    nu lese ich die Schleife nochmal, und finde 48 ist ein komischer wert für einen Index.
    Wenn das Array in dieser Dimension 48 Elemente hat, dann darf der Index nur bis 47.
    Also,
    die Grenzen sind (48,3,6) Erläuterung 48 = einen Tag jede halbe Stunde, 3 Messgruppen und 6 = 4 Messwerte und Zeit (Std) Zeit (min)
    ich hatte die Überwachung schon an und da kann ich keinen Fehler finden.
    Ich habe, hoffentlich schärfer einen Ausschnitt der Überwachung mit angehängt.

    So kommt der Arraywert 48 zu Stande

    Gruß conger890
    Bilder
    • Datenarray.png

      110,12 kB, 1.512×966, 171 mal angesehen

    Back to the Roots

    Sehr geehrte Erfinder des Rades,
    vielleicht hilft es Ihren Überlegungen, wenn ich sage:
    Den Index auf 49 zu stellen, hat nur zusätzliche "0"en in das Datenarray geschrieben.
    Ich glaube der Fehler liegt ganz wo anders
    Wenn ich die Befehlszeile
    Chat1.series.clear()
    'ausgrüne', werden alle Befehle richtig abgearbeitet, nur auf dem Chart haben ich dann übereinander
    alle Kurven, das ist nicht so gut.
    Also frage ich anders, wie lösche ich vorhandene Linien in einen Chart der Firma Microsoft unter VB 2010, bevor ich neue Linien schreiben lasse.?
    Danke und Gruß conger890
    Problem nicht beschreiben können, konkrete Fragen zum Problem nicht beantworten und dann arrogant.

    conger890 schrieb:

    Sehr geehrte Erfinder des Rades,
    Ich liebe es, wenn ein Plan funktuioniert.
    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!