Liste in Methode?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

s_m_w

Betreff: Liste in Methode?

BeitragMo, Feb 02, 2009 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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
 

#Reaper

Newsposter

BeitragMo, Feb 02, 2009 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Xeres

Moderator

BeitragMo, Feb 02, 2009 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Local TargetList:TList = CreateList()

Du musst die Liste auch erstellen wenn du was darin eintragen möchtest Wink
(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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

s_m_w

BeitragMo, Feb 02, 2009 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
#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 Wink
(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

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group