Liste in Methode?
Übersicht

![]() |
s_m_wBetreff: Liste in Methode? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin,
stark vereinfacht habe ich folgenden Code: Code: [AUSKLAPPEN] Method FindTarget:Ship() Local TargetList:TList ... If (Ship <> Null) DebugLog("Ship existiert") TargetList.AddLast(Ship) ... End Method Ich bekomme eine Unhandled Exception:Attempt to access field or method of Null object. Ship ist eine Variable vom Typ Spaceship und existiert definitiv, TargetList sollte eigentlich auch existieren, doch der Debugger zeigt mir den Fehler in der Zeile Code: [AUSKLAPPEN] TargetList.AddLast(Ship)
Kann es daran liegen, dass Ship schon in einer anderen Liste ist? Oder gehen Listen in Methoden garnicht? |
||
Sheep Happens |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich verstehe nun nicht ganz was du willst...?
Wieso eine Liste in einer Methode? Meisten schreibt man die in ein Type. In der Methode hast du die Liste Local definiert, sie wird also direkt wieder gelöscht. Und wenn Ship nicht Global definiert ist und auch nicht in deiner Methode definiert wird, geht das auch nicht. Was sagt da dein DebugLog? Und prinzipiell kannst du ein Objekt in mehreren Listen haben. |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Local TargetList:TList = CreateList()
Du musst die Liste auch erstellen wenn du was darin eintragen möchtest ![]() (passiert mir auch viel zu häufig...) |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
s_m_w |
![]() Antworten mit Zitat ![]() |
---|---|---|
#Reaper hat Folgendes geschrieben: Also ich verstehe nun nicht ganz was du willst...?
Wieso eine Liste in einer Methode? Meisten schreibt man die in ein Type. In der Methode hast du die Liste Local definiert, sie wird also direkt wieder gelöscht. Und wenn Ship nicht Global definiert ist und auch nicht in deiner Methode definiert wird, geht das auch nicht. Was sagt da dein DebugLog? Und prinzipiell kannst du ein Objekt in mehreren Listen haben. Okay, entschuldigung falls ich mich unklar ausgedrückt habe. Ich muss wohl weiter ausholen: Ich will alle möglichen Ziele für ein Schiff in einer Liste speichern, dann ein zufälliges daraus auswählen, die Schiffe selbst sind schon in einer global definierten Liste. Wie schon gesagt ist Ship definitiv definiert, damit hatte ich keine Probleme. Ich poste mal die ganze Methode, vielleicht findet jemand den Fehler oder hat noch Verbesserungsvorschläge. Code: [AUSKLAPPEN] Method FindTarget:Ship()
Local TargetList:TList If (Self.Target <> Null) And (Self.Target.IsDead() <> 1) Return Self.Target For Local Ship:Ship = EachIn ShipList If (Ship <> Self) And (Ship.IsDead() <> 1) And (Ship.Team <> Self.Team) If (Ship <> Null) DebugLog("Ship existiert") TargetList.AddLast(Ship) EndIf Next Local TargetNumber:Int = Rand(1,TargetList.Count()) Local CurrentTargetNumber:Int For Local Ship:Ship = EachIn TargetList CurrentTargetNumber = CurrentTargetNumber+1 If (CurrentTargetNumber = TargetNumber) Return Ship EndIf Next Self.RDir = 0 Return Null End Method edit: Xeres hat Folgendes geschrieben: Code: [AUSKLAPPEN]
Local TargetList:TList = CreateList()
Du musst die Liste auch erstellen wenn du was darin eintragen möchtest ![]() (passiert mir auch viel zu häufig...) Uff, ich wusste, dass es so offensichtlich war... Aber das es SO offensichtlich war, dass habe ich nicht gedacht. Danke |
||
Sheep Happens |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group