Autor Beitrag
huuuuuh
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: Fr 11.02.11 17:33 
hi,

habe folgendes Problem: ich befülle eine Listbox per Add() in einer foreach-Schleife aus einer Liste von Objekten.
Sieht also ungefähr so aus:
ausblenden C#-Quelltext
1:
2:
 foreach (object obj in Objektliste)
                    lbListbox.Items.Add(obj);

bei der Anweisung "lbListbox.Items.Add(obj);" kommt die OutOfMemory-Exception mit dem Kommentar "Das Listenfeld enthält zu viele Elemente". Die Listbox wird vorher per Clear() geleert...
und was das ganze noch seltsamer macht: die Exception kommt nur beim debuggen unter Win7, unter WinXP nich...
hat einer von euch ne Ahnung, wovon das kommen könnte und wie ich das wegkriege?
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Sa 12.02.11 10:46 
Hallo,
vielleicht hat das irgendwtwas mit dem Objekt zu tun, was Du hinzufügen wilst?
Zitat:
A ListBox Throws An OutOfMemoryException When Adding An Item That Returns A nullptr In Its ToString()
Ist aber nur eine Vermutung...
Was für Objekte sind das denn ?

Für diesen Beitrag haben gedankt: huuuuuh
huuuuuh Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: Sa 12.02.11 11:35 
sind verschiedene Objekte. alle von einer eigenen Klasse. diese eigenen Klassen sind alle von der selben (abstrakten) Basisklasse abgeleitet. ich häng mal den entsprchenden Ausschnitt aus dem Klassendiagramm an:
Klassendiagramm (png, 44.93 KB)
die Objekte, welche ich der Listbox hinzufügen möchte stehen in drei Listen. eine von "ProjectileWeapon", eine von "BeamWeapon", eine von "Rocket"
edit: die ToString()-Methode ist in der Basisklasse (Weapon) überschrieben und gibt nur den Namen zurück
Einloggen, um Attachments anzusehen!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 12.02.11 12:00 
Hallo,
dann wird wohl bei einem deiner Objekte doch der Name null sein.
Kannst du doch einfach im Debugger feststellen...

Andererseits deutet ""Das Listenfeld enthält zu viele Elemente" natürlich eher auf die Anzahl hin, aber ich glaube mal nicht, daß du mehr als 32000 (oder liegt die Grenze bei 65000?) Objekte hinzugefügt hast.

Für diesen Beitrag haben gedankt: huuuuuh
huuuuuh Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: Sa 12.02.11 12:40 
passiert ja gleich beim ersten objekt, was ich hinzufügen will. von daher kanns nicht die menge sein. die meldung passt in dem zusammenhang nicht... zumindest sehe ich nicht, wie...
da mit dem null werd ich mal überprüfen, danke...