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.

    Tja, dann haste wohl nen Abend mit debuggen vor dir.
    "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 Poste mal Deinen aktuelles Projekt und die Datei, ZIP, bereinigt.
    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!

    mrMo schrieb:

    Tja, dann haste wohl nen Abend mit debuggen vor dir.


    Ich habe grad mal jedes Panel mit einer Zahl versehen.
    Ergebnis: 800
    Aber die Messagebox sagt mit 1500?

    VB.NET-Quellcode

    1. MessageBox.Show(FlowLayoutPanel5.Controls.Count)

    Ähm?
    ~Ich denk mal das sind die Label und die Panels zusammen?!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xX-Nick-Xx“ ()

    Ist der Inhalt der Datei denn korrekt? Nicht das da was fehlt oder Absätze oder so fehlen…
    "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
    Hallo,
    teste doch erstmal, ob die Datei komplett eingelesen wird, bevor du irgendwelche Panels und Labels deiner Form hinzufügst. Folgender Code gibt mir jede Zeile deiner Log-Datei korrekt aus:

    C#-Quellcode

    1. ​var lines = System.IO.File.ReadLines(@"E:\Temp\log.txt");
    2. int i = 0;
    3. foreach (var line in lines)
    4. {
    5. ++i;
    6. Console.WriteLine($"Line {i}: {line}");
    7. }

    Dein Problem scheint mMn. nichts mit dem Einlesen der Datei zu tun zu haben.
    @xX-Nick-Xx Mit welchem (aktualisierten) Code liest Du gegenwärtig die Datei ein?
    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:

    @xX-Nick-Xx Mit welchem (aktualisierten) Code liest Du gegenwärtig die Datei ein?


    VB.NET-Quellcode

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

    Testweise hatte ich mal alles Deaktiviert...


    @xX-Nick-Xx Überzeuge Dich doch bitte davon, dass der Code auch bei mir läuft, wenn ich ihn einfüge.
    ====
    Warum schreibst Du unlesbare Label, bevor Dein Problem gelöst ist?

    VB.NET-Quellcode

    1. ...
    2. TotalLog = TotalLog + 1
    3. Next
    4. Label1.Text = $"{TotalLog} Zeilen gelesen"
    5. End Sub

    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!

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

    RodFromGermany schrieb:

    Warum schreibst Du unlesbare Label, bevor Dein Problem gelöst ist?

    Ich habe es einmal nur mit den Labels versucht, und da klappt es ohne Probleme, nur mit Panel und PB klappt es nicht..

    Hier der Gesamte Code

    VB.NET-Quellcode

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

    Ich würde ja aufjedenfall mal das komische Try-Catch wegmachen bringt dir beim Debuggen garnix und erschwert dir nur die Suche nach dem Fehler.

    Und die Frage der Fragen: Warum mit sovielen Controls rumhantieren? Ein Log ist doch nur ein Log... Nimm nen Datagridview oder eine Listbox und style die dementsprechend.
    Was klappt denn nicht? kommt eine Fehlermeldung? Woran merkst du das "es nicht klappt"?
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Jou, erstmal den Blödsinn mit dem Try-Catch weg. Was ist, wenn Du nur die Panels hinzufügst und die PicBoxen und die Labels weglässt? Was, wenn Du Panels und Labels weglässt und nur PicBoxen hinzufügst? Wenn Du alles aktivierst, wäre ab einer gewissen Schleifeniteration eine per Haltepunkt schrittweise Abarbeitung sinnvoll. Also z.B.

    VB.NET-Quellcode

    1. For Each line In System.IO.File.ReadLines(My.Settings.LogPath)
    2. If TotalLog = DieZahlAbDerEsNichtMehrLäuft Then Stop 'also z.B. 1598
    3. 'und dann hier Dein restlicher Code

    Sobald eben der 1598ste Durchlauf stattfindet, kommt der Compiler beim Stop an. Dann schrittweise mit F11 oder Haltepunkten durchgehen und schauen, wo das Programm die Sub abbricht. Aber ich dacht auch, dass es daran liegen könnte, was EdR schon sagte: Ab einer bestimmten Control-Anzahl ist aus die Maus.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    was EdR schon sagte: Ab einer bestimmten Control-Anzahl ist aus die Maus.

    Wie oben schon Beschrieben habe ich aber ein Bereich wo er viel mehr Controls erstellen muss und da läuft es ohne Probleme :D
    Aber ich werde es mal Testen wie du meintest

    Wahrscheinlich ist der Bereich + dein Log Bereich einfach zu viel insgesammt?
    Siehe: stackoverflow.com/questions/52…w-in-a-windows-forms-form

    Mit deiner abenteuerlichen Art den Log anzuzeigen zusätzlich wirst du sicher schnell an die 10000 Grenze kommen.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    @xX-Nick-Xx Auch mit Deinem Code aus Post #31 komme ich an das Ende der Datei aus Post #25.
    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!
    Wie lange dauert das Laden eigentlich bei Dir @xX-Nick-Xx? Nicht, dass die kritische Minute überschritten wird.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed

    Also mit allen Controls hat es Ca 2min Gedauert (Aber da hat er ja auch nicht Vollständig geladen)

    nur mit den Labels hat er 1x bei mir um die 20min Geladen xD

    Vollzitat eines Vorposts durch Anredefunktion ersetzt ~VaporiZed
    @RodFromGermany: Er hat bei dir alles Geladen?
    bei mir und meinem Kollegen nicht.

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