Autor Beitrag
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Do 17.03.11 20:24 
Sry für den kryptischen Titel, ist nen bisschen schwer kurz zubeschreiben was ich eigentlich will.

Also ich habe eine Funktion in der statischen Klasse Cardbase die anhand eines Strings entscheidet welche Daten in eine Listbox geladen werden
ausblenden Quelltext
1:
CardBase.AddCustomToListBox(Listbox listbox, String customSets)					

Die Listbox in die eingefügt werden soll befindet sich allerdings in einem Fenster welches vom Hauptfenster geöffnet wird und zwar so:
ausblenden Quelltext
1:
2:
CardLibrary cardLibrary = new CardLibrary();
cardLibrary.Show();

in CardLibrary wird dann eine weiteres Fenster geöffnet
ausblenden Quelltext
1:
2:
Config.customOpen = true;
CustomSets customSets = new CustomSets();

von dort aus wird dann die Funktion AddCustomToListBox aufgerufen
ausblenden Quelltext
1:
2:
CardLibrary cardLibrary = CardLibrary.ActiveForm as CardLibrary;
CardBase.AddCustomToListBox(cardLibrary.lbCardLib, "Eventide");

Der Debuggen meckert nicht, allerdings wenn der Code tatsächlich ausgeführt wird.

NullReferenceException wurde nicht behandelt.
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Wo liegt da genau der Fehler?
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Do 17.03.11 21:31 
Hallo,
user profile iconDragonclaw hat folgendes geschrieben Zum zitierten Posting springen:
Also ich habe eine Funktion in der statischen Klasse Cardbase die anhand eines Strings entscheidet welche Daten in eine Listbox geladen werden...
Weniger Typsierung als mit einem String geht nicht! Das ist wirklich nicht die beste Methode. Aber gut.

Ich denke, dass es an der Stelle scheitert:
ausblenden C#-Quelltext
1:
2:
CardLibrary cardLibrary = CardLibrary.ActiveForm as CardLibrary;
CardBase.AddCustomToListBox(cardLibrary.lbCardLib, "Eventide");
Denn lass mal eine andere Form aktiv sein... Wenn Du ein as verwendest, dann solltest Du danach auch auf null prüfen.
Soviel erstmal, Marko
Dragonclaw Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Do 17.03.11 21:51 
user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
user profile iconDragonclaw hat folgendes geschrieben Zum zitierten Posting springen:
Also ich habe eine Funktion in der statischen Klasse Cardbase die anhand eines Strings entscheidet welche Daten in eine Listbox geladen werden...
Weniger Typsierung als mit einem String geht nicht! Das ist wirklich nicht die beste Methode. Aber gut.


Ich baue mir auch alle makieren Einträgen einer CheckedListBox nen String zusammen und gebe den weiter, falls dir was besseres einfällt wäre ich für Ratschläge dankbar.

user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:

Ich denke, dass es an der Stelle scheitert:
ausblenden C#-Quelltext
1:
2:
CardLibrary cardLibrary = CardLibrary.ActiveForm as CardLibrary;
CardBase.AddCustomToListBox(cardLibrary.lbCardLib, "Eventide");
Denn lass mal eine andere Form aktiv sein... Wenn Du ein as verwendest, dann solltest Du danach auch auf null prüfen.
Soviel erstmal, Marko


Du hast Recht, cardLibrary ist null. Was ist nicht verstehe ist warum das so ist. Muss ich erst die Form CardLibrary wieder als Focus setzen? Falls ja wie mache ich das?
Dragonclaw Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Do 17.03.11 23:43 
Okay ich hab das jetzt folgender Weise gelöst:

Der Construktor von customSets nimmt jetzt ne ListBox mit auf, dann hab ich ne lokale referenze zu ner Listbox und kann die einfach an die Funktion weiter reichen.

Ich würde aber trotzdem ganz gerne verstehen warum das oben nicht geklappt hat.