Log wird nicht Vollständig ausgelesen

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

Es gibt 43 Antworten in diesem Thema. Der letzte Beitrag () ist von xX-Nick-Xx.

    Log wird nicht Vollständig ausgelesen

    Moin zusammen, ich habe ein Problem beim Laden der Log-Datei.
    Die Log-Datei hat 1598 Zeilen, aber der Code lädt diese nicht Vollständig...

    Code:

    VB.NET-Quellcode

    1. ​ FlowLayoutPanel5.Controls.Clear()
    2. ErrorLog = 0
    3. TotalLog = 0
    4. OKLog = 0
    5. WarnLog = 0
    6. Dim count1 = System.IO.File.ReadLines(My.Settings.LogPath).Count()
    7. For i As Integer = 1 To count1
    8. Dim inhalt() As String = System.IO.File.ReadAllLines(My.Settings.LogPath)
    9. PanelBLOG = New Panel
    10. FlowLayoutPanel5.Controls.Add(PanelBLOG)
    11. With PanelBLOG
    12. .Name = i & "_LogPanel"
    13. .Dock = DockStyle.Top
    14. .BackColor = Color.FromArgb(50, 50, 50)
    15. .Height = 35
    16. .Width = 1220
    17. ' .Padding = New Padding(1)
    18. .SendToBack()
    19. End With
    20. PBULOG = New PictureBox
    21. PanelBLOG.Controls.Add(PBULOG)
    22. With PBULOG
    23. .Name = i & "_LogPictureBox"
    24. .Dock = DockStyle.Left
    25. .BackColor = Color.FromArgb(40, 40, 40)
    26. .SizeMode = PictureBoxSizeMode.CenterImage
    27. If inhalt(i).Contains("Error:") Then
    28. .Image = My.Resources.erroricon
    29. ErrorLog = ErrorLog + 1
    30. ElseIf inhalt(i).Contains("Warning:") Then
    31. .Image = My.Resources.warningICON
    32. WarnLog = WarnLog + 1
    33. Else
    34. .Image = My.Resources.infoIcon
    35. OKLog = OKLog + 1
    36. End If
    37. ' .SizeMode = PictureBoxSizeMode.CenterImage
    38. .SendToBack()
    39. .Width = 37
    40. End With
    41. ' AddHandler PBULOG.Click, AddressOf Me.PBUClick
    42. LBLoG = New Label
    43. PanelBLOG.Controls.Add(LBLoG)
    44. With LBLoG
    45. .Name = i & "_LogLabel"
    46. .Dock = DockStyle.Left
    47. .BackColor = Color.FromArgb(40, 40, 40)
    48. .Width = 1200
    49. ' .AutoSize = True
    50. .Height = 30
    51. .AutoEllipsis = True
    52. .Text = inhalt(i)
    53. .TextAlign = ContentAlignment.MiddleLeft
    54. ' .Font = New Font("Segoe UI", 12, FontStyle.Bold Or FontStyle.Bold)
    55. ' .Font = New Font("Segoe UI", "12", "style=Bold")
    56. .BringToFront()
    57. End With
    58. TotalLog = TotalLog + 1
    59. Next


    kann mir jemand sagen warum?

    xX-Nick-Xx schrieb:

    Die Log-Datei hat 1598 Zeilen, aber der Code lädt diese nicht Vollständig..
    Was heißt das? Fehlt was? Erste Zeile oder so fehlt?

    Im übrigen lädst du in jedem Durchlauf der Schleife wieder neu, was völlig unnötig ist und auch unnötig Performance kostet.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    Was heißt das? Fehlt was? Erste Zeile oder so fehlt?

    die Hälfte des Inhaltes fehlt.
    Es lässt sich Scrollen, aber ab der Hälfte ist es einfach leer.

    Inwiefern neuladen?
    dadurch?

    VB.NET-Quellcode

    1. FlowLayoutPanel5.Controls.Clear()
    2. ErrorLog = 0
    3. TotalLog = 0
    4. OKLog = 0
    5. WarnLog = 0

    ja, und scheints will er 1598 Labels ins FlowlayoutPanel drücken, und je nach Anzahl von Warnings und Errors auch mehrere Hundert Pictureboxen.
    Ziemlich abenteuerlich.

    xX-Nick-Xx schrieb:

    dadurch?
    nein, dadurch:

    VB.NET-Quellcode

    1. For i As Integer = 1 To count1
    2. Dim inhalt() As String = System.IO.File.ReadAllLines(My.Settings.LogPath)
    oder was meinst du, was System.IO.File.ReadAllLines tut?


    Kann man das alles nicht in einem DataGridView darstellen? Finde das gehampelt mit hunderten von Labels und Pictureboxen bissl albern.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @mrMo Jou.
    @xX-Nick-Xx
    Was passieren soll, hast Du nicht geschrieben.
    Nimm mal dies als Rahmen, um Dich durch Deine Log-Datei durch zu iterieren.

    VB.NET-Quellcode

    1. For Each line In System.IO.File.ReadLines(My.Settings.LogPath)
    2. ' was tun
    3. Next

    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!
    @xX-Nick-Xx Zunächst sollte es funktionieren.
    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!

    RodFromGermany schrieb:

    For Each line In System.IO.File.ReadLines(My.Settings.LogPath)
    ' was tun
    Next


    VB.NET-Quellcode

    1. Dim count2 = System.IO.File.ReadLines(My.Settings.LogPath).Count()
    2. For Each line In System.IO.File.ReadLines(My.Settings.LogPath)
    3. ' Dim inhalt() As String = System.IO.File.ReadAllLines(My.Settings.LogPath)
    4. If line.Count = count2 Then
    5. Exit Sub
    6. Else
    7. PanelBLOG = New Panel
    8. FlowLayoutPanel5.Controls.Add(PanelBLOG)
    9. With PanelBLOG
    10. .Name = TotalLog & "_LogPanel"
    11. .Dock = DockStyle.Top
    12. .BackColor = Color.FromArgb(50, 50, 50)
    13. .Height = 35
    14. .Width = 1220
    15. ' .Padding = New Padding(1)
    16. .SendToBack()
    17. End With
    18. PBULOG = New PictureBox
    19. PanelBLOG.Controls.Add(PBULOG)
    20. ' Dim lines5() As String = System.IO.File.ReadAllLines(ModFolderPath & "\" & i & ".mfp")
    21. With PBULOG
    22. .Name = TotalLog & "_LogPictureBox"
    23. .Dock = DockStyle.Left
    24. .BackColor = Color.FromArgb(40, 40, 40)
    25. .SizeMode = PictureBoxSizeMode.CenterImage
    26. If line.Contains("Error:") Then
    27. .Image = My.Resources.erroricon
    28. ErrorLog = ErrorLog + 1
    29. ElseIf line.Contains("Warning:") Then
    30. .Image = My.Resources.warningICON
    31. WarnLog = WarnLog + 1
    32. Else
    33. .Image = My.Resources.infoIcon
    34. OKLog = OKLog + 1
    35. End If
    36. ' .SizeMode = PictureBoxSizeMode.CenterImage
    37. .SendToBack()
    38. .Width = 37
    39. End With
    40. ' AddHandler PBULOG.Click, AddressOf Me.PBUClick
    41. LBLoG = New Label
    42. PanelBLOG.Controls.Add(LBLoG)
    43. With LBLoG
    44. .Name = TotalLog & "_LogLabel"
    45. .Dock = DockStyle.Left
    46. .BackColor = Color.FromArgb(40, 40, 40)
    47. .Width = 1200
    48. ' .AutoSize = True
    49. .Height = 30
    50. .AutoEllipsis = True
    51. .Text = line
    52. .TextAlign = ContentAlignment.MiddleLeft
    53. ' .Font = New Font("Segoe UI", 12, FontStyle.Bold Or FontStyle.Bold)
    54. ' .Font = New Font("Segoe UI", "12", "style=Bold")
    55. .BringToFront()
    56. End With
    57. TotalLog = TotalLog + 1
    58. End If
    59. Next
    60. 'Button62.Text = TotalLog
    61. 'Button63.Text = OKLog
    62. 'Button66.Text = WarnLog
    63. 'Button71.Text = ErrorLog
    64. Label299.Text = FlowLayoutPanel5.Controls.Count & " | " & TotalLog




    RodFromGermany schrieb:

    @xX-Nick-Xx Zunächst sollte es funktionieren.


    Es Funktioniert ja auch irgendwie
    Nur eben nicht für Größere Dateien...

    Es kommt ja nicht mal ne Exception...

    Das hier reicht um alle Zeilen einer Datei auszulesen und schrittweise zu verarbeiten. Die hört automatisch auf, wenn die letzte Zeile verarbeitet wurde.

    VB.NET-Quellcode

    1. For Each line In System.IO.File.ReadLines(My.Settings.LogPath)
    2. Next

    Da brauchst nicht vorher nochmal irgend nen count berechnen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    xX-Nick-Xx schrieb:

    Es Funktioniert ja auch irgendwie
    Nur eben nicht für Größere Dateien...
    naja, 3000 Controls aufs Form zu packen ist numal bischen viel - dafür ist WinForms nicht ausgelegt.
    Jedes Control, und insbesondere Picturebox, ist eine ziemlich teure Resource.
    Das es mit wenig Zeilen geht, mit vielen aber nicht, deutet darauf hin, dass du dein Rechner-Budget in irgendeiner Hinsicht überziehst.
    vlt. zuviele Window-Handles, oder zu grossen Speicherbedarf,... weiss man nicht.
    Jo, ist doof, dasses da keine gscheite Fehlermeldung gibt.

    xX-Nick-Xx schrieb:

    mrMo schrieb:

    Kann man das alles nicht in einem DataGridView darstellen? Finde das gehampelt mit hunderten von Labels und Pictureboxen bissl albern.
    mir gefällt was eigenes aber besser :D
    Naja, ein gut gestyltes DatagridView, im selbstgebastelten "Dark-Theme", und mit Icon-Anzeige - das ist durchaus etwas eigenes.

    Ist durchaus machbar, es so hinzubosseln, dasses genauso aussieht wie dein Bildle in post#9

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

    @xX-Nick-Xx Vielleicht siehst Du mal hiedr rein: System.IO.File.ReadLines()
    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!
    Evtl. wäre es sinnvoll ein Usercontrol (Label + Picturebox) zu bauen und das dann in das FlowLayoutPanel zu packen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen