Früher habe ich es auch so gemacht, aber inzwischen verzichte ich auf Verschachtelungen, wenn möglich. So finde ich es viel übersichtlicher:NicTheQuick hat geschrieben:Code: Alles auswählen
Global.i mem1, mem2, mem3 Procedure init() mem1 = AllocateMemory(1000) If mem1 mem2 = AllocateMemory(1000) If mem2 mem3 = AllocateMemory(1000) If mem3 ;alles okay, weiter geht's Else FreeMemory(mem2) FreeMemory(mem1) ;Redundanz -> Schlecht! Debug "Fehlgeschlagen" ProcedureReturn #False EndIf Else FreeMemory(mem1) Debug "Fehlgeschlagen" ProcedureReturn #False EndIf Else Debug "Fehlgeschlagen" ProcedureReturn #False EndIf ProcedureReturn #True EndProcedure
Code: Alles auswählen
Global.i mem1, mem2, mem3
Procedure init()
mem1 = AllocateMemory(1000)
If mem1 = 0
Debug "Fehlgeschlagen"
ProcedureReturn #False
EndIf
mem2 = AllocateMemory(1000)
If mem2 = 0
FreeMemory(mem1)
Debug "Fehlgeschlagen"
ProcedureReturn #False
EndIf
mem3 = AllocateMemory(1000)
If mem3 = 0
FreeMemory(mem2)
FreeMemory(mem1)
Debug "Fehlgeschlagen"
ProcedureReturn #False
EndIf
;alles okay, weiter geht's
ProcedureReturn #True
EndProcedure
Code: Alles auswählen
Procedure init()
mem1 = AllocateMemory(1000)
If mem1 = 0
Debug "Fehlgeschlagen: mem1"
Goto CleanUp
EndIf
mem2 = AllocateMemory(1000)
If mem2 = 0
Debug "Fehlgeschlagen: mem2"
Goto CleanUp
EndIf
mem3 = AllocateMemory(1000)
If mem3 = 0
Debug "Fehlgeschlagen: mem3"
Goto CleanUp
EndIf
ProcedureReturn #True
CleanUp:
If mem1 : FreeMemory(mem1) : EndIf
If mem2 : FreeMemory(mem2) : EndIf
ProcedureReturn #False
EndProcedure