Seite 1 von 2
Warum am ende des Codes "End"?
Verfasst: 07.06.2011 16:49
von thminz
Moin! In vielen Threads sehe ich öfters Codes in denen am ende immer das Schlüsselwort "End" benutzt wird. Warum schreibt man den "End" am ende obwohl am ende des Codes sowieso nichts mehr folgt und das Programm nach Codeende beendet wird ? Ist das so sinnvoll wenn man immer am ende "End" schreibt ? Wen man das Program vorzeitig beenden möchte dann ist es klar. Aber warum am ende ?
Was ich meine:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 250, 200, "Hallo", #PB_Window_SystemMenu)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
End
Danke im Vorraus!

Re: Warum am ende des Codes "End"?
Verfasst: 07.06.2011 17:33
von bobobo
PB-Hilfe hat geschrieben:
Syntax
End [ExitCode]
Beschreibung
Beendet ordentlich die Programmausführung. Der optionale 'ExitCode' Parameter kann angegeben werden, wenn das Programm einen Fehlercode zurückgeben soll (häufig in Konsolen-Programmen genutzt).
Der 'ExitCode' kann z.B. mit dem ProgramExitCode() Befehl weiterverwendet werden.
Die Betonung liegt auf ordentlich
Re: Warum am ende des Codes "End"?
Verfasst: 07.06.2011 17:53
von rolaf
Ja komisch das so wenig die Hilfe lesen. Dabei ist das die erste gute Quelle und nur eine F1 Taste weit.

Vor absenden jeden Eröffnungs-Postings sollte eine 30 Sekunden-Schleife kommen mit Abfrage "Schon die Hilfe gelesen? Ja, Nein, Weis nicht, Hä?, Wattn dass?, Huch! Und nur bei Ja gehts weiter...

Re: Warum am ende des Codes "End"?
Verfasst: 07.06.2011 18:15
von STARGÅTE
Also auf ASM Basis unterscheiden kommen nur folgende (unbedeutende) Zeilen hinzu, wenn man END benutzt.
Das wichtige (Freigabe von Sachen) ist in jedem Fall immer dabei ...
NoEnd hat geschrieben:
; MessageRequester("End", "or not End")
PUSH dword 0
CALL DBL
PUSH dword _S1
PUSH dword _S2
CALL _PB_MessageRequester_DEBUG
CALL _PB_MessageRequester@8
PUSH dword 1
CALL DBL
_PB_EOP_NoValue:
PUSH dword 0
_PB_EOP:
CALL _PB_EndFunctions
CALL PB_DEBUGGER_End
PUSH dword [PB_MemoryBase]
CALL _HeapDestroy@4
CALL _ExitProcess@4
_PB_EndFunctions:
CALL _PB_FreeNetworks@0
CALL _PB_FreeMemorys@0
RET
End hat geschrieben:
; MessageRequester("End", "or not End")
PUSH dword 0
CALL DBL
PUSH dword _S1
PUSH dword _S2
CALL _PB_MessageRequester_DEBUG
CALL _PB_MessageRequester@8
; End
PUSH dword 1
CALL DBL
JMP _PB_EOP_NoValue
PUSH dword 2
CALL DBL
_PB_EOP_NoValue:
PUSH dword 0
_PB_EOP:
CALL _PB_EndFunctions
CALL PB_DEBUGGER_End
PUSH dword [PB_MemoryBase]
CALL _HeapDestroy@4
CALL _ExitProcess@4
_PB_EndFunctions:
CALL _PB_FreeNetworks@0
CALL _PB_FreeMemorys@0
RET
Ein END am
Ende des Code ist meiner Meinung nach wirklich überflüssig
Re: Warum am ende des Codes "End"?
Verfasst: 07.06.2011 23:23
von PMV
Kurz:
Benötigt, wenn man einen Exitcode bestimmen möchte, ansonsten Geschmackssache.
Re: Warum am ende des Codes "End"?
Verfasst: 07.06.2011 23:39
von thminz
Danke danke für die vielen Antworten, ihr seid klasse

Danke

Re: Warum am ende des Codes "End"?
Verfasst: 08.06.2011 16:13
von AND51
Alternativ kannst du auch den Befehl "Happy End" benutzen!
Dies führt nicht nur dazu, dass dein Programm 'ordentlich' beendet wird, wie es in der Hilfe steht; nein, es macht außerdem dein Betriebssystem glücklicher, wenn es sieht, dass dein Programm kein normales Ende, sondern ein Happy End hat!

Re: Warum am ende des Codes "End"?
Verfasst: 05.08.2011 09:45
von ullmann
@AND51: Happy End ist zwar originell, aber das Makro "Happy" setzt ein Kommentarzeichen ";" an den Zeilenanfang,
so dass die ganze Zeile und damit auch der End-Befehl nicht ausgeführt wird. Obwohl das vermutlich keine Rolle spielt,
wird damit zumindest die laut Dokumentation beim End-Befehl genannte "ordentliche" Beendigung des Programms nicht
genutzt.
Happy End macht also das Betriebssystem glücklicher, aber das "ordentliche" Beenden können wir nur vermuten.
Edit:
Code: Alles auswählen
Macro Happy_End
;-) (oh du glückliches Betriebssystem)
End ;hier ist's jetzt ordentlich
EndMacro
Re: Warum am ende des Codes "End"?
Verfasst: 05.08.2011 09:58
von ts-soft
End macht genau das, was es sagt, es beendet sofort das Programm. Wer sagt den das End am Ende
stehen muß? Es kann auch in einer Procedure, Bedingung usw. stehen.
Exitcode wurde ja bereits erwähnt und in ganz alten PB Versionen war es noch wichtig, um Datas vom
Programm abzugrenzen, da gab es noch keine DataSection oder war eine solche nicht erforderlich.
Re: Warum am ende des Codes "End"?
Verfasst: 05.08.2011 10:13
von ullmann
Aber die Frage war, ob "End" am Ende des Programmes sinnvoll ist.