Ich versuche, eine .cfg-Datei zu lesen.Analysieren und Speichern von Werten aus einer Konfigurationsdatei
Ich habe erfolgreich Werte gelesen und in einer Liste und dann in einem Datagrid gespeichert.
Der schwierige Teil für mich, ist diese "Linekey.INT.option", wie Sie unten sehen können.
linekey.6.label = Call Park
linekey.6.line = 1
linekey.6.pickup_value =
linekey.6.type = 10
linekey.6.value = 70
linekey.7.label = Park 1
linekey.7.line = 1
linekey.7.pickup_value = 71
linekey.7.type = 16
linekey.7.value = 71
linekey.8.label = Park 2
linekey.8.line = 1
linekey.8.pickup_value = 72
linekey.8.type = 16
linekey.8.value = 72
Ich lese die Config-Datei und fügen Sie alle linekeys zu einem Wörterbuch
string[] fileLines = File.ReadAllLines(filepath);
StringBuilder sb = new StringBuilder();
foreach (string line in fileLines)
{
sb.AppendLine(line);
}
tbConfigInput.Text = sb.ToString();
Dictionary<string, string> getLines = new Dictionary<string, string>();
foreach (string line in tbConfigInput.Lines)
{
if (line != "#!version:1.0.0.1")
{
if (line != "")
{
if (line.Contains("linekey"))
{
string[] splitLine = line.Split('=');
getLines.Add(splitLine[0], splitLine[1]);
}
}
}
}
ich sie in ein 2 Spaltenliste fügen Sie dann kann kein Problem
foreach (KeyValuePair<string, string> line in getLines)
{
ListViewDataItem item = new ListViewDataItem();
listConfigOptions.Items.Add(item);
item[0] = line.Key;
item[1] = line.Value;
}
listConfigOptions.Columns[0].BestFit();
listConfigOptions.Columns[1].BestFit();
Was kann ich‘ t scheinen zu tun, nehmen Sie alle Elemente, die Linekey.6 oder Linekey.7 gehören und fügen Sie sie zu ihrer eigenen Zeile in einer Datentabelle, dh:
Like Key | Label | Line | Extension | Type | Value
7 Park 1 1 71 16 71
Einige Ratschläge wären ein großer Segen. Ich bin jetzt fast einen ganzen Tag drangeblieben.
Danke SO!
Dieses Problem kann am besten durch die objektorientierte Programmierung angesprochen werden. Arrays und Datatables sind ein guter Zwischenschritt, aber sie erschweren das Lesen/Pflegen von Code, wenn Ihre Kernlogik nur Arrays verwendet. Das Exportieren von OOP geht weit über den Rahmen einer einzelnen SO-Frage hinaus. Um Ihnen den Einstieg zu erleichtern: Erstellen Sie eine Klasse ('MyClass'), die das gesamte Feld enthält (vgl. Das Beispiel Ihrer Datentabelle) und generieren Sie dann eine' List
Flater
OOP ist nicht das Problem. Ich staple all diesen Testcode in einer Klasse zum Testen auf. –
Nicht versuchen, witzig zu sein, aber _lack of OOP_ ist genau dein Problem hier. Sie haben einen wiederholbaren Satz von Objekten (Linekey), die alle die gleichen Eigenschaften haben, aber Sie vermeiden es, diese in eine Klasse mit separaten Eigenschaften zu setzen. Du wählst den harten Weg ohne erkennbaren Grund. Gibt es einen Grund, warum Sie die Verwendung von Klassen zum leichteren Parsen vermeiden? – Flater