Autor |
Beitrag |
foxy
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Mo 21.07.08 14:41
Hallo Leute,
hätte da mal eine Frage bezüglich ArrayListen.
Das ganze ist eine Applicatioen für ein PDA.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| User user; ArrayList list = new ArrayList(); for (int i = 0; i< 100;i++) { user = new User(x,y,z); list.add(user); } |
das ist nur ein vereinfachtes Beispiel, aber im grunde macht es genau das was ich brauche, es legt eine Objekt referenz in eine arrayliste.
Aber nachdem ich nun beim 2. durchlauf bin und will nun die liste per debug kontrollieren, geht alles schieff. Bei jedem versuch auf den Inhalt der Liste zu zugreifen, welche objekte nun darin enthalten sind (es sind objekte enthalten) bricht er ab. Keine fehlermeldung nichts. Immer wenn ich auf den Inhalt der objekte zugreifen will.
Kann es sein, das er die referenz nicht sauber da rein schreibt ?
gruss
edit:
bei weiteren debugs, habe ich nun festegestellt, das der fehler schon in der erstellung des Objektes liegt.
der vollständige code sieht so aus ich entdecke einfach den fehler nicht:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| User user; Markt markt; ArrayList list = new ArrayList(); marktgebuehr_update markt_u = new marktgebuehr_update(); XmlElement root = GetResponseDom(markt_u.getKatalog(methode));
foreach (XmlNode @data in root[methode].ChildNodes) { if (methode.Equals("benutzer")) { user = new User(@data["loginname"].InnerText, @data["pwd_md5"].InnerText, Convert.ToInt32(@data["id"].InnerText)); MessageBox.Show(user.uLoginName.ToString()); list.Add(user); } else { markt = new Markt(Convert.ToInt32(@data["id"].InnerText), @data["name"].InnerText, Convert.ToDouble(@data["preis"].InnerText)); list.Add(markt); } } |
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 21.07.08 14:54
Irgendwie kann ich jetzt nicht erkennen, wo in Deinem "großen" Quelltext nun welcher Fehler kommt
Aber eines kann ich Dir sagen: Die ArrayList ist veraltet, stammt noch aus .NET 1.1. Seit .NET 2.0 gibt es als Ersatz die generische List<T>. Die spart Dir hinterher viel rum-gecaste.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
foxy 
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Mo 21.07.08 15:02
ach nach der habe ich schon gesucht
hab schon gedacht c# hätte sowas nicht :>
aber zu dem problem: Also ich kann mir das auch nicht erklären.
Der erstellt mir einfach kein User Objekt -.-
edit:
ich hab das ganze mal abgefangen, also die exceptions und da spuckt er mir ein stackoverflow aus °°
woher kommt das denn °°
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
Zuletzt bearbeitet von foxy am Mo 21.07.08 15:04, insgesamt 1-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 21.07.08 15:04
Dann setz doch mal einen Haltepunkt im Konstruktor der User-Klasse und schau, wo es knallt 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
foxy 
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Mo 21.07.08 15:12
Also es knallt direkt nach der ersten zuweisung der Variablen...
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53:
| class User { private string loginName, pw; private int id;
public User(string loginName, string pw, int id) { this.id = id; this.pw = pw; this.loginName = loginName; }
public int uID { get { return this.id; } set { this.id = value; } }
public string uLoginName { get { return this.uLoginName; } set { this.uLoginName = value; } }
public string upw { get { return this.pw; } set { this.pw = value; } }
} |
Also die übergabe Parameter sind korrekt auch mit werten gefüllt und die richtigen Typen.
Also das Objekt erstellen kann ich ... wenn ich teste mit festen werten gehts ...
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 21.07.08 15:14
Und @data["id"].InnerText enthält auch einen gültigen Int32, sodass Convert.ToInt32 keine Exception wirft?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
foxy 
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Mo 21.07.08 15:17
nein wirft keine exception.
Aber bin weiter am debuggen und habe nun festegestellt, das er absolut kein objekt von der klasse user erstellt auch nicht mit festen werten.
Bei einem test
C#-Quelltext 1: 2:
| User user1 = new User("test","test2",1); MessageBox.Show(user1.uLoginName.toString()); |
crasht er ebenfalls -.- stack overflow exception
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 21.07.08 15:21
So, hab's jetzt mal bei mir ausprobiert. Der Fehler ist eigentlich ganz eindeutig.
Der Getter von uLoginName liest uLoginName liest uLoginName liest uLoginName ........
Man benutzt übrigens in C# keine Prefixe wie "u". Höchstens für private Felder mal ein "_", aber nicht für Properties.
//edit: Satzreihenfolge korrigiert 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
foxy 
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Mo 21.07.08 15:25
na geil :> ja super denke das wird er wohl gewesen sein
dank dir ... da hätt ich noch stunden gesucht :>
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|