mikrocontroller.net

Forum: PC-Programmierung [c#] Komandofenster im Windows Form Anwendung


Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gute Tag,

ich bin noch sehr unbedarft in c#.

Nun habe ich ein Programm geschieben um log dateien in csv zu parsen. 
Angefangen habe ich mit einer Konsolenanwendung, dort habe ich mir die 
"debug" infomationen per writeline ausgegeben.

Aufgrund der besseren Handhabung habe ich nun den Code in eine Windows 
From Anwenung übernommen um eine schöne GUI zu basteln. Dort wird mir 
nur noch mit einer Messagebox mitgeteilt wenn die Umwandlung vollendet 
ist.

Ich hätte aber gerne doch ein Debugfester, also z.B. ein Konsolenfenster 
das aufspringt und die Daten durchrasselt. Btw die logs sind durchaus 
groß 10-30MB textfiles.

Welches element würde sich da am besten anbieten? Oder gibt es eine 
möglichkeit ein Konsolenfenster zu öffnen und dort die ausgabe wie 
gehabt zu realisieren?

Tips reichen, brauch kein kompletten code, den bekomm ich schon selber 
hin.

Herzlichen Danke

Benedikt

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst ja einfach ein Textfeld in die GUI reindröseln und dort die 
Ausgabe machen. Oder ist das nix?

Ralf

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ListView, TextBox, DataGridView oder selber zeichnen (und in ein 
UserControl verpacken).
Allerdings geht bei diesen Datenmengen die Performance der Controls 
schnell in den Keller, wenn man's falsch macht. Z.B. nach jeder 
konvertierten Zeile ein Update des ListViews/der TextBox, statt nur alle 
100-1000 Zeilen, oder Strings verwenden, statt des wesentlich 
schnelleren StringBuilder etc.

Autor: michl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab momentan leider kein Visual Studio zur Hand aber unter den 
Projekteigenschaften gibt es eine Option um die Konsole zu aktivieren. 
Dann hat man nebmen seiner GUI noch die normale Konsole und sieht da die 
Ausgaben.
Wenn du das Problem noch nicht behoben hast kann ich heute abend wenn 
ich daheim bin mal den genauen Ort und die Option schreiben.

Mfg
Michael

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es wirklich nur zu Debug-Zwecken sein soll bietet .NET die Klasse 
System.Diagnostics.Debug. Diese hat die Methoden Write, WriteLine, 
unterstützt Einrückung, ... Die Ausgabe landet per Default im 
Output-Fenster von VisualStudio. Eigene Trace-Listener können 
angeschlossen werden, z.B. die Ausgabe in eine Datei, ... Ach ja, die 
Ausgaben erfolgen nur in der Debug-Version des Programms. Bei einem 
Releas-Build kommen sie nicht mehr.

Falls das nicht ausreicht gibt es log4net. Das ist ein vergleichsweise 
einfach anzuwendendes Logging-Framework, das per Konfigurations-Datei 
aktiviert oder deaktiviert werden kann. Es unterstützt Formatierungen, 
diverse Ausgabeziele wie Konsole, Datei und selbst gestrickte 
Ausgabe-Listener. Zu finden unter 
http://logging.apache.org/log4net/index.html

Gruß
Markus

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus

danke die System.Diagnostics.Debug ist für meine zwecke völlig 
ausreichend.

Vielen Dank für eure Mühe und die schnelle Hilfe

Benedikt

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus schrieb:
> Wenn es wirklich nur zu Debug-Zwecken sein soll bietet .NET die Klasse
> System.Diagnostics.Debug. Diese hat die Methoden Write, WriteLine,
> unterstützt Einrückung, ... Die Ausgabe landet per Default im
> Output-Fenster von VisualStudio.

und ist ca. um den Faktor 30 - 150 langsamer als eine optimierte 
TextBox-Version.

> Falls das nicht ausreicht gibt es log4net. Das ist ein vergleichsweise
> einfach anzuwendendes Logging-Framework, das per Konfigurations-Datei
> aktiviert oder deaktiviert werden kann. Es unterstützt Formatierungen,
> diverse Ausgabeziele wie Konsole, Datei und selbst gestrickte
> Ausgabe-Listener. Zu finden unter
> http://logging.apache.org/log4net/index.html

Wenn Performance und einfache Konfiguration wichtiger sind:
NLog

> Gruß
> Markus

Autor: Markus Volz (valvestino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arc Net schrieb:
> und ist ca. um den Faktor 30 - 150 langsamer als eine optimierte
> TextBox-Version.

Du hast sicherlich recht. Allerdings ist das für eine einfache 
Debug-Ausgabe, die man am Ende der Arbeit zumeist nicht mehr benötigt, 
mit Kanonen auf Spatzen geschossen. Ein einfacher Aufruf 
Debug.WriteLine(...) ist da im Bezug auf Programmieraufwand viel 
effizienter. Außerdem muß man sich nicht mit so Zeugs wie 
Worker-Threads, programmatischem Scrollen des Textes, ... kümmern. Zumal 
es wohl beim ursprünglichen Problem wirklich nur um die Kontrolle des 
Programmergebnisses geht. ;-)

> Wenn Performance und einfache Konfiguration wichtiger sind:
> NLog
Kannte ich bislang nicht. Ich schaue es mir aber mal heute Abend an, ob 
das wirklich so viel einfacher zu konfigurieren ist, wie auf der 
Startseite behauptet wird. ;-)

Gruß
Markus

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Btw.:
Du musst nur in den Projektoptionen den Output Type auf 
Konsolenanwendung ändern und schon hast du eine Konsole.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.