INI Auslesen

toko84

Grünschnabel
Hey Leute bräuchte mal eure Hilfe. Ich muss eine INI-Datei in C# auslesen, hört sich einfach an, aber da ich absolut neu im C# Geschäft bin eine riesen Hürde für mich.

So sieht die INI-Datei aus:
HTML:
# ---> Import-Parameter:
DATAR|1|CHAR||-|X|PDB-Bezeichnung|18|CHAR|###|n|Default|PDB|MAT - Alle Mußfelder prüfen (= X)
#FLAG_MUSS_PRUEFEN
-|-|-|-|-|-|-|-|-|-|-|-|-|-
SPERA|1|CHAR||-|E|PDB-Bezeichnung|18|CHAR|###|n|Default|PDB|MAT - Sperrmodus (shared,exclusiv,keine Sperre)


ich soll nicht die Kommentar-Zeilen auslesen also die Zeilen wo eine # (Kommentar) ist, sondern nur die anderen Zeilen sprich zB.DATA ... und die "|" sollen dabei nicht mit ausgelesen werden, das soll ein Leerzeichen entsprechen

So sieht mein Quellcode zum auslesen zur Zeit aus:
PHP:
OpenFileDialog dlgDateiÖffnen = new OpenFileDialog();
            dlgDateiÖffnen.Filter = "INI-Dateien (*.ini)|*ini";
            dlgDateiÖffnen.InitialDirectory = "C:\\Übungsaufgabe";
            dlgDateiÖffnen.Title = "INI-Datei öffnen";
            if (dlgDateiÖffnen.ShowDialog() == DialogResult.OK)
            {
                string strDateiname = dlgDateiÖffnen.FileName;
                textBox1.Text = strDateiname;
                StreamReader iniReader = new StreamReader(strDateiname);
                String strDatenzeile = iniReader.ReadToEnd();
                String strDatenzeile1 = strDatenzeile.Substring(25, 93);         
                Auslesen.Text = strDatenzeile;
                AuslesenString.Text = strDatenzeile1;
               }

Könnt ihr mir da vielleicht weiter helfen.
Danke im vorraus.
 
Hallo,

am besten geht man so vor, dass erstmal alle Zeilen gelesen werden und man dann entscheidet, ob und wie man diese verarbeitet. Wenn also eine Zeile mit "#" anfängt, dann kannst du sie gleich wegwerfen (Kommentar) und die "|" kann man durch Leerzeichen ersetzen. Für das Speichern der Daten bietet sich ein Array an.

Hier mal etwas Beispielcode:
C++:
OpenFileDialog dlgDateiÖffnen = new OpenFileDialog(); 
dlgDateiÖffnen.Filter = "INI-Dateien (*.ini)|*ini"; 
dlgDateiÖffnen.InitialDirectory = "C:\\Übungsaufgabe"; 
dlgDateiÖffnen.Title = "INI-Datei öffnen"; 
            
if( dlgDateiÖffnen.ShowDialog() != DialogResult.OK ) 
{
    return;
}

ArrayList arrayLines = new ArrayList();

using( StreamReader sr = new StreamReader(dlgDateiÖffnen.FileName) )
{
    String strLine;
    
    while( (strLine = sr.ReadLine()) != null )
    {
        if( !strLine.StartsWith("#") ) // Kommentarzeilen werden nicht verwendet
        {
            arrayLines.Add(strLine.Replace("|", " ")); // Striche durch Leerzeicher ersetzen
                                                       // und Zeile in ein Array packen
        }
    }
}

// Nur zum Testen - alle Strings ausgeben
foreach( String str in arrayLines )
{
    Console.WriteLine(str);
}
Für C#-Fragen ist übrigens das .NET-Forum der richtige Ort.

Gruß
MCoder
 
Zurück