Autor Beitrag
pacy
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 14.04.08 19:56 
hallo *,

ich würde gerne zur laufzeit hashes anlegen, allerdings bekomme ich die key's der hashes auch erst zur laufzeit.
die infos dazu kommen aus einer xml datei, hier ein auszug:

ausblenden XML-Daten
1:
2:
3:
<FIELD NAME = "sym" TYPE = "string"  VALUE = "30" />
<FIELD NAME = "del" TYPE = "bool"           />
<FIELD NAME = "mod" TYPE = "date"           />


daraus würde ich gerne folgendes gebilde generieren:

erster hashes:
key: sym
value: verweis auf nächsten hash

nächster hash:
key: string
value: 20

usw.

d. h. aus der xml datei soll ein hash generiert werden. dieser hash soll als key werte jeweils die NAME attribute besitzen, als value dann eine referenz auf weitere hashes, deren key immer aus dem attribut TYPE besteht und deren value immer dem attribut VALUE entspricht (oder 0, wenn VALUE nicht angegeben ist).

ich hoffe ich konnte das einigermaßen verständlich ausdrücken.

mein bisheriger code sieht so aus:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
            for (int i = 0; i < objectList.Count; i++)                                      // This gets the count of all objects and iterate over it
            {
                Hashtable objectFieldHash = new Hashtable();
                objectHash.Add(objectList.Item(i).Attributes.Item(0).Value,
                    objectFieldHash);
                Console.WriteLine(objectList.Item(i).Attributes.Item(0).Value);

            }


das problem dabei ist: das bei jedem durchgang immer wieder objectFieldHash genommen wird und daher die werte immer wieder überschrieben werden. im vorfeld genügend hashes generieren kann ich aber nicht, weil die genau benötigte anzahl ja erst beim einlesen bekannt wird,

weiß da jemand von euch abhilfe?

danke schonmal!

gruß pacy

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 15.04.08 10:16 
Hallo,

Dein konkretes Problem habe ich nicht verstanden; aber das sollte egal sein. Ich kann keinen Grund sehen, warum Du die Hashtable nicht vor der Schleife erstellst. Im Gegensatz zu einem Array hat eine Hashtable eine variable Größe, kann also jederzeit per Add() verändert werden.

Außerdem hast Du verschwiegen, von welchem Typ objectHash ist (ebenfalls eine Hashtable?). Sollen dort wirklich ganze Hashtables registriert werden?

Übrigens entspricht ab NET 2.0 Hashtable nicht mehr dem "Stand der Dinge"; stattdessen ist Dictionary<TKey, TValue> zu empfehlen. Jürgen