Nullpointer als Rückgabewert -> Wie kann das sein?
Übersicht

![]() |
M0rgensternBetreff: Nullpointer als Rückgabewert -> Wie kann das sein? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute,
Ich habe grade zum Test ein Programm zusammengehackt, das eine Liste von sortierten Arrays zu einem sortieren Array zusammen merged und dann zurück gibt. Aber aus irgendeinem Grund, der sich mir leider total entzieht, gibt die Funktion immer einen Nullpointer zurück. Obwohl ich unmittelbar vor der Rückgabe das zurückzugebende Objekt nochmal explizit auf Null prüfe. Entweder, ich habe Tomaten auf den Augen, oder... Ja, Keine Ahnung. Ich will nicht direkt "BUG" schreien. Also, hier ist die Funktion: BlitzMax: [AUSKLAPPEN] Function mergeLists:TIntArray(arrayList:TList) Und hier der Aufruf mit dem Test: BlitzMax: [AUSKLAPPEN] Local list:TList = New TList Anmerkung: TIntArray ist einfach nur ein Container für integer-Arrays, weil man primitive Datentypen ja nicht in Listen stecken darf. Die Ausgabe, die ich jetzt in der Konsole erhalte ist: Zitat: DebugLog:[1, 50, 90]
DebugLog:[5, 60, 100] DebugLog:New Step... DebugLog:[1, 5, 50, 60, 90, 100] DebugLog:ListFirst: 0 DebugLog:Ar null: 0 DebugLog:Result null: 1 Kann mir bitte jemand erklären, was da los ist? Ich teste ja unmittelbar vor der Rückgabe ob das Objekt null ist. Und direkt nach der Rückgabe ist es null. Lg, M0rgenstern |
||
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man kann ihn ja nicht Testen, aber was auffällt ist, das du nur ein array zurückgibst, wenn:
Code: [AUSKLAPPEN] If(arrayList.Count() = 1) Then
DebugLog("ListFirst: " + (TIntArray(arrayList.First()) = Null)) Local array:TIntArray = TIntArray(arrayList.First()) DebugLog("Ar null: " + (array = Null)) Return array EndIf jedoch wenn es mehrere sind keine Rückgabe erteilst: Code: [AUSKLAPPEN] DebugLog("New Step...")
mergeLists(newList) End Function Daher egal wie es ausgeht, das Resultat wird ja nicht zurück geliefert. so sollte es doch gehen? Code: [AUSKLAPPEN] DebugLog("New Step...") Local a:TIntArray=mergeLists(newList) Return a End Function |
||
Windows 7 Home Premium 64bit
CPU: Intel Core i5 3450 Ivy Bridge GPU: HIS HD 4870 1GB GDDR5 RAM: 4x 4GB DDR3-SDRAM Dual Channel |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
oO....
Verdammt vielen Dank. Genau das ist es. Natürlich muss ich den rekursiven Funktionsaufruf zurückgeben, sonst kommt, außer im Trivialfall nichts gescheites bei raus. Das ist jetzt schon peinlich...^^ Dankeschön. |
||
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach oft verzwifelt man an den kleinsten Sachen, weil man vor lauter Buchstaben kaum noch richtig sieht;) | ||
Windows 7 Home Premium 64bit
CPU: Intel Core i5 3450 Ivy Bridge GPU: HIS HD 4870 1GB GDDR5 RAM: 4x 4GB DDR3-SDRAM Dual Channel |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group