Laden...

ini-File in Hashtabel einlesen

Erstellt von ramsi vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.351 Views
R
ramsi Themenstarter:in
3 Beiträge seit 2005
vor 19 Jahren
ini-File in Hashtabel einlesen

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

S
709 Beiträge seit 2005
vor 19 Jahren

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.

R
ramsi Themenstarter:in
3 Beiträge seit 2005
vor 19 Jahren
ini-File in Hashtable einlesen

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

S
8.746 Beiträge seit 2005
vor 19 Jahren

Speichere doch einfach alle Value-Zeilen (jeweils von [][ zu []) in einer ArrayList und übergebe dann diese ArrayList als Value an die Hashtable.

R
ramsi Themenstarter:in
3 Beiträge seit 2005
vor 19 Jahren

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 ?

S
8.746 Beiträge seit 2005
vor 19 Jahren

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. 🙂

354 Beiträge seit 2004
vor 19 Jahren

So wie ich das sehe, ist der Aufbau immer der gleiche ... daher könntest eine Klasse anlegen die die folgenden Properties hat:

  • Name
  • Version
  • Patch
  • InstallDatum

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

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo ramsi,

also, straight forward geht das so. Das ist nicht die beste, aber die simpelste Lösung:

solange noch zeilen in der datei

  • lies eine zeile
  • wenn zeile mit [ beginnt
    • merke zeile in currentkey
  • sonst
    • füge zeile an hashtable [currentkey] an
      ende

herbivore