Announcement

Collapse
No announcement yet.

Richtextbox spliten mit Remove und Insert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Richtextbox spliten mit Remove und Insert

    Hallo Community,

    Für die Schule muss ich ein Messwertprogramm schreiben.
    Die Daten liegen in einer .txt-Datei vor und werden in die RTB geladen, schließlich wird der Mittelwert bestimmt.

    Als dritter Schritt sollen die Dezimalpunkte in Kommas umgewandelt werden.
    Dort liegt nun mein Problem.
    Bisher habe ich das:

    Code:
    string help = richTextBox1.Text;
                string[] Zeilen = help.Split('\n');
                int zNr = 0;
                StringBuilder strbuilder = new StringBuilder(help);
    
                foreach (string zeile in Zeilen)
                {
                    
    
                    int nIndex = help.IndexOf(".");
                    strbuilder.Remove(nIndex, ".".Length);
                    strbuilder.Insert(nIndex, ",");
                    richTextBox1.Text = strbuilder.ToString();
    
                }
    Er ändert mir alle Punkte, jedoch:

    1)Ist in der .txt Datei das Datum enthalten, indem die Punkte nicht umgewandelt werden sollen.
    2)Ändert der Code jeden Punkt nur beim Betätigen des Buttons.

    Irgendwo muss der Fehler bei der Split-Funktion liegen, soweit ich das sehe.

    Ich hoffe ihr könnt mir helfen

    Schöne Grüße

    PS:
    Die Datei hat folgenden Aufbau

    Datum/Uhrzeit Messwert (MW)1 MW2 MW3 MW4 MW5 MW6 MW7 Mittelwert

  • #2
    Hallo,

    ein Messwertprogramm
    Dazu werden die Daten vorzugsweise in einem DataGridView (eine Art Tabelle) gespeichert. Dadurch ergeben sich dann ganz andere bessere Wege dein Problem zu lösen.

    Bevor ich jedoch fortfahre will ich wissen ob es Teil der Aufgabe ist die Daten in einer Richtextbox darzustellen oder ob hier die Wahl frei ist.
    Wenn dem so sei dann nehmen wird das DataGridView (wird oft mit DGV abgekürzt).


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hallo,

      du trennst die Datei ja schon in die einzelnen Zeilen auf. Damit du jetzt nur die Punkte in den Messwerten ersetzt, solltest du auch noch jede Zeile in die einzelnen Felder auftrennen und die Umwandlungen nur auf die Felder ausführen, die einen Messwert und kein Datum enthalten.

      Wenn du das gemacht hast, wandelst du bei den Messwerten den Typ am Besten in float um und stellst alles in einem DGV da (siehe Post von gfoidl).
      "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

      Viele Grüße Novi

      Comment


      • #4
        Hi,
        danke für die erste Hilfe.
        Leider ist die Verwendung der Richtextbox Pflicht. Auch die .txt-Datei haben wir so von unserem Leher bekommen.

        Comment


        • #5
          Hallo,

          nachfolgend ein kleines Beispiel das zeigt wie die Werte aus der Text-Datei in eine Objekt-Liste übergeführt werden. Mit dieser Liste kann ein DGV oder eben die Richttextbox gefüllt werden.

          [highlight=c#]
          using System;
          using System.Collections.Generic;
          using System.IO;

          namespace ConsoleApplication1
          {
          class Program
          {
          static void Main(string[] args)
          {
          List<MessDaten> messDatenListe = new List<MessDaten>();
          using (StreamReader sr = File.OpenText("Messdaten.txt"))
          {
          // Kopfzeile überlesen:
          sr.ReadLine();

          // Datenzeilen solange einlesen bis das Ende der Datei
          // erreicht ist:
          while (!sr.EndOfStream)
          {
          string zeile = sr.ReadLine();

          // Die Zeile in die Spalten trennen (Trennzeichen ?):
          string[] spalten = zeile.Split(' ');

          MessDaten messDaten = new MessDaten();
          messDaten.Datum = DateTime.Parse(spalten[0]);

          for (int i = 0; i < messDaten.Messwerte.Length; i++)
          messDaten.Messwerte[i] = double.Parse(spalten[i + 1]);
          }
          }
          }
          }

          public class MessDaten
          {
          public DateTime Datum { get; set; }
          public double[] Messwerte { get; set; }
          public double Mittelwert { get; set; }

          public MessDaten()
          {
          this.Messwerte = new double[7];
          }
          }
          }
          [/highlight]


          Leider ist die Verwendung der Richtextbox Pflicht.
          Sollten es die Umstände zulassen dann richte deinem Lehrer bitte folgendes aus (ich setzte das als Zitat von mir selbst):
          Originally posted by gfoidl
          Ich halte für pädagogisch sehr bedenklich dass den Schülern gelehrt bzw. zur Aufgabe gestellt wird tabellarsiche Daten in einer Richttextbox darzustellen wenn es dafür ein spezielles Steuerelement - das DataGridView - gibt. Dies zusammen mit Datenbindung wäre der korrekte Weg eine solche Aufgabe zu bewältigen.

          Bitte berücksichtigen Sie das.

          Gruss
          gfoidl

          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment


          • #6
            HI,
            erstmal danke für deine Hilfe.
            ich blicke halbwegs dadurch. Nur den Wert "MessDaten" muss ich noch irgendwie bestimmen, oder?
            Da im moment die Fehlermeldung:

            Der Typ- oder Namespacename "MessDaten" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)

            auftaucht.

            Ich bin vermutlich einfach zu blöde, dafür.

            Ich hoffe du kannst mir noch ein Denkanstoß geben.
            Schöne Grüße
            Dominik

            Comment


            • #7
              Hallo Dominik,
              Originally posted by SamFisher View Post
              Der Typ- oder Namespacename "MessDaten" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)
              In Günthers Code ist die Klasse MessDaten in derselben Quelldatei enthalten. Hast du diese Klasse vergessen? Oder hast du sie in eine eigene Quelldatei ohne Namespace oder mit falschem Namespace kopiert? Wenn sie in einer eigenen Quelldatei mit demselben Namespace steht, solltest du den "eigenen" Namespace auch in die using-Liste aufnehmen, damit der Compiler diesen Typ sicher findet (das sagt schließlich die Fehlermeldung aus).

              Gruß Jürgen

              @Günther
              Es ist ein guter Gedanke, einen Lehrer auf solch unpraktisches Vorgehen hinzuweisen. Aber wenn wir den Lehrer nicht kennen, ist es unsicher, wie er auf so etwas reagiert.

              Comment


              • #8
                Hallo Jürgen,

                Es ist ein guter Gedanke, einen Lehrer auf solch unpraktisches Vorgehen hinzuweisen. Aber wenn wir den Lehrer nicht kennen, ist es unsicher, wie er auf so etwas reagiert.
                Ich weiß, aber ein Lehrer muss den korrekten Weg zeigen sonst hat dieser den Beruf verfehlt. Damit es für SamFisher kein Problem gibt sollte er mich ja zitieren. Wenn es dann der Lehrer für angemessen findet kann er mit mir diskutieren und SamFisher als Schüler nicht damit konfrontieren.


                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #9
                  Ich finds auch ziemlich dreist was manche Lehrer ihren Schülern so beibringen. Wir haben hier in der Arbeit auch jemanden der macht gerade Technikerschule und dem helf ich hin und wieder auch etwas beim Programmieren. Das ist schon ein Irrsinn wie manche Sachen da erklärt werden.

                  Comment


                  • #10
                    Hallo zusammen,

                    das ist leider ein großes Problem das wir hier nicht lösen können. Daher bitte keine weitere Diskussion zu diesem Thema.


                    mfG Gü
                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                    Comment


                    • #11
                      HI,
                      entschuldigung für die verspätete Rückantwort.
                      Zum einen unsere Schule ist ein Treffpunkt für inkompetente Lehrer. Mit 17 Jahren ist dies ernst gemeint und nicht die typische:"Ich bin Schüler und hasse jeden Lehrer" Einstellung. Wobei ich meinen Programmier-Lehrer durchaus in die Kategorie komeptent einordnen würde.

                      Seisdrum. Zu meinem Problem. Kann es sein, dass wenn ich den Ordner umbennen ein wenig die Datei zerschieße? Mein Namespace ist Cleopatra. Habe ich für MessDaten eingefügt mit der Fehlermeldung:

                      "Cleopatra" ist ein(e) "Namespace", wird aber wie ein(e) "Typ" verwendet.

                      Nach den ersten Meldungen aus meiner Klasse, haben es die meisten nicht. Mit anderen Worten wird es eine lustige Programmier-Stunde.

                      Eine zweite Frage hätte ich noch (wenn es den Umfang nicht sprengt), wie sieht es denn mit dieser DVG aus? Vielleicht sollte der Lehrer die wirklich mal sehen.

                      Schöne Grüße
                      Dominik

                      Comment

                      Working...
                      X