Hallo!
Ich hab vor kurzem mit C# begonnen und hab nun ein Problem mit den Hashtables. Es geht um die Übernahme von Daten aus einem ini-File.
Aufbau des INI-Files (Auszug):
[Microsoft Office]
Version=Office2000
Patch=6
InstallDatum=12.05.2002
[NetOP]
Version=7.0
Patch=3
InstallDatum=12.04.2003
In diesem ini-File sind die Daten der in Verwendung befindlichen Produkte vorhanden. Wie kann ich das oben angeführte File in eine Hashtable übernehmen, wenn
[Microsoft Office] der Key sein soll und
Version=Office2000
Patch=6
InstallDatum=12.05.2002
das Value zu diesem Key sein soll. Des Einlesen hab ich mittels streamreader realisiert
Vielen Dank im voraus
mfG
Ramsi
Wie jetzt? Wäre ist besser, das zum Beispiel Version der Key ist, und Office2000 der Value? Das mit den Überkategorien lässt sich vieleicht mit einer "Hashtable in einer Hashtable" lösen. Falls das überhaupt geht.
Ich hab das als Aufgabe von unserem Informatiprofessor bekommen. Das was in den eckigen Klammern steht, soll der Key sein, der andere Text dazu der Value.
Wenn also das ini-File überprüft wird, soll [] der Key sein und der folgende Text der dazugehörende Value sein, bis zu den nächsten [], die den Beginn des nächsten Keys repräsentieren.
mfG
Ramsi
Speichere doch einfach alle Value-Zeilen (jeweils von [][ zu []) in einer ArrayList und übergebe dann diese ArrayList als Value an die Hashtable.
Das wäre möglich, es soll aber jede [] ein Key sein, wenn ich den text von [] bis zum Anfang der nächsten [] in ein Array schreibe und dies an die Hashtable übergebe, wie komme ich dann zu meinem Key, der der Text in den eckigen Klammern ist ?
Naja, du musst schon noch das Parsen der Datei übernehmen. Wenn du auf ein "[" triffst kopierst du alles was dann folgt in einen String bis zum abschliessenden "]". Der Rest bis zum nächsten "[" in deine Value-Liste.
Alternativ könnte man das auch mit regulären Ausdrücken lösen. Dann wüde das gesamte Parsen automatisch ablaufen. Das ist aber nicht gerade eine "Beginner-Lösung", würde deinen Prof vielleicht stutzig machen. 🙂
So wie ich das sehe, ist der Aufbau immer der gleiche ... daher könntest eine Klasse anlegen die die folgenden Properties hat:
Das Ini-File kannst ja zweilenweise durchparsen. Wenn du zu einer Zeile kommst, die mit "[" beginnt, bist bei einem Key -> neues Objket der oben angelegten Klasse erstellen.
Die nächsten Zeilen auslesen und deinem Objekt entsprechend die Werte zuweisen. Das machst mit allen Einträgen.
Der HashTable kannst das ganze dann mit
ht.Add(myObject.Name, myObject);
übergeben.
.NET GUI - Die Community für grafische Oberflächen unter .NET
Jetzt kostenlos besorgen: .NET BlogBook
Norbert Eder
DasBackup
Hallo ramsi,
also, straight forward geht das so. Das ist nicht die beste, aber die simpelste Lösung:
solange noch zeilen in der datei
herbivore