Probleme beim auslesen einer Datei



  • Hallo,
    hoffe es kann mir einer helfen.
    Möchte eine Datei auslesen. In der stehen viele diverse Einstellungen die uninteressant sind.
    Irgendwann kommt eine Zeile mit <Channels> ab der nächsten Zeile sind die interesanten Werte die jeweils mit einem Komma getrennt werden.
    Bsp. 0,156,2486,23,4,2658,...
    Nach den Zahlen steht gleich danach </Channels>
    Diese Zahlen möchte ich nun in meinem Programm unter anderem in einem Diagramm anzeigen lassen bzw später auch verändern können.
    Dachte mir, dass ich diese in ein Array speicher, gibt es da einen Befehl, der mir die Zahlen einzeln ausliest.
    Ich dachte mir an folgendes:

    string zeile;
                OpenFileDialog ofd = new OpenFileDialog();
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    StreamReader Datei = new StreamReader(ofd.FileName);
                    while((zeile = Datei.ReadLine())!= null)
                    {
                        if (zeile.contains("<Channels>"))
                        {
                            for (*****) // Zählschleife bis </Channels>
                            {
                            ******      // Speichern der Zahlen in einem Array
                            }
                        }
                    }
                    Datei.Close();
                }
    

    Habe bisher nur Erfahrungen im strukturiertem Programmieren. Mir reichen aber Ansätze die ich weiter ausführen kann.
    Danke im Voraus



  • Such mal nach "Split" damit kannst du in C# nach einem Zeichen suchen und an der Stelle wo das Zeichen gefunden wurde trennen.

    Edit: http://www.galileocomputing.de/openbook/csharp/kap17.htm



  • ist das ganze eine xml datei? dann wäre es mit den entsprechenden funktionen noch einfacher, an den string zu kommen...



  • Nein ist keine XML-Datei, habe aber es geschafft.

    string data;
    int[] Channels;
    private void Öffnen()
            {
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Filter = "SPX-Dateien (*.spx)|*.spx";
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    StreamReader Datei = new StreamReader(ofd.FileName);
                    data = Datei.ReadToEnd();
                    Datei.Close();
                    yDaten();
                }
            }
            private void yDaten()
            {
                char[] Trenner = new char[] { ' ', ',', '<', '>' };
                string[] Elemente = data.Split(Trenner);
                int a = Elemente.Length;
                int Start = 0;
                int Ende = 0;
                for (int i = 0; i < a; i++)
                {
                    if (Elemente[i].Equals("Channels"))
                    {
                        Start = i;
                    }
                    if (Elemente[i].Equals("/Channels"))
                    {
                        Ende = i;
                    }
                }
                Channels = new int[Ende - Start - 1];
                int j = 0;
                for (int i = (Start + 1); i < Ende; i++)
                {
                    Channels[j] = Convert.ToInt32(Elemente[i]);
                    j++;
                }
            }
    

    In der Funktion "Öffnen" wird die gesammte Datei in den string data eingelesen. In der Funktion yDaten wird data gesplittet, nach den Trennern "Channel" und "/Channel" gesucht und alle Zahlen dazwischen ins Array "Channels" gespeichert.
    Danke nochmal für eure Hilfe.


Log in to reply