EXIT (function): Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
m (Removed protection from "EXIT (function)")
No edit summary
Line 22: Line 22:
{{PageExamples}}
{{PageExamples}}
''Example 1:'' Using an ON TIMER check to read the _EXIT request return values.
''Example 1:'' Using an ON TIMER check to read the _EXIT request return values.
{{CodeStart}} '' ''
{{CodeStart}}
q = {{Cl|_EXIT (function)|_EXIT}} 'function read prevents any program exit at start of program
q = {{Cl|_EXIT (function)|_EXIT}} 'function read prevents any program exit at start of program
{{Cl|ON TIMER (n)|ON TIMER}}(5) {{Cl|GOSUB}} quit
{{Cl|ON TIMER (n)|ON TIMER}}(5) {{Cl|GOSUB}} quit
Line 43: Line 43:
   {{Cl|CASE}} 3: {{Cl|PRINT}} "= Both X and Ctrl + Break!"
   {{Cl|CASE}} 3: {{Cl|PRINT}} "= Both X and Ctrl + Break!"
{{Cl|END SELECT}}
{{Cl|END SELECT}}
{{Cl|RETURN}} '' ''
{{Cl|RETURN}}
 
{{CodeEnd}}
{{CodeEnd}}




''Example 2:'' Removing temporary files before closing a program upon a user's exit request.
''Example 2:'' Removing temporary files before closing a program upon a user's exit request.
{{CodeStart}} '' ''
{{CodeStart}}
x = {{Cl|_EXIT}}  'initial function call blocks a user exit
x = {{Cl|_EXIT}}  'initial function call blocks a user exit
OPEN "t3mpdata.tmp" FOR APPEND AS #1
OPEN "t3mpdata.tmp" FOR APPEND AS #1
DO
DO
IF {{Cl|_EXIT}} THEN {{Cl|CLOSE}}: {{Cl|KILL}} "t3mpdata.tmp": {{Cl|_DELAY}} 1: {{Cl|SYSTEM}}
IF {{Cl|_EXIT}} THEN {{Cl|CLOSE}}: {{Cl|KILL}} "t3mpdata.tmp": {{Cl|_DELAY}} 1: {{Cl|SYSTEM}}
LOOP '' ''
LOOP
{{CodeEnd}}
{{CodeEnd}}
<center>{{text|Note: If you have a file named ''t3mpdata.tmp'' change the file name!|red}}</center>
<center>{{text|Note: If you have a file named ''t3mpdata.tmp'' change the file name!|red}}</center>

Revision as of 01:35, 23 January 2023

The _EXIT function prevents the user from closing a program and indicates if a user has clicked the close button in the window title (X button) or used CTRL + BREAK.


Syntax

exitSignal% = _EXIT


Description

  • Once the _EXIT function is used, the user can no longer manually exit the program until it is ended with END or SYSTEM.
  • _EXIT returns any exit requests made after the initial call as:
0 = no exit request has been made since _EXIT monitoring began in the program.
1 = exit attempted by clicking the window X (close) button since last function call. (Bit 0 set)
2 = exit attempted with CTRL + BREAK since last call. (Bit 1 set)
3 = both CTRL + BREAK and the X box have been used since last call. (Bit 0 and 1 set)
  • If a return value is not 0 the program can handle an exit request at a more convenient time if necessary.
  • After being read, the _EXIT value is reset to 0 so store the value when a program delays an exit request.
  • Note: Once _EXIT has been used once, you must monitor your program by checking it for user _EXIT requests.
  • Don't just use _EXIT once to prevent a user from exiting a program early, as that constitutes bad practice.


Examples

Example 1: Using an ON TIMER check to read the _EXIT request return values.

q = _EXIT 'function read prevents any program exit at start of program
ON TIMER(5) GOSUB quit
TIMER ON
PRINT "  The Timer will check for exit request every 5 seconds."
PRINT "Click the X box and/or Ctrl - Break to see the _EXIT return!"
PRINT "                    Any Key Quits"
PRINT
DO: _LIMIT 30
  '                    ' simulated program loop
LOOP UNTIL INKEY$ <> ""
END

quit:
q = _EXIT
IF q THEN PRINT q;
SELECT CASE q
  CASE 1: PRINT "= X button was clicked"
  CASE 2: PRINT "= Ctrl + Break keypress"
  CASE 3: PRINT "= Both X and Ctrl + Break!"
END SELECT
RETURN


Example 2: Removing temporary files before closing a program upon a user's exit request.

x = _EXIT  'initial function call blocks a user exit
OPEN "t3mpdata.tmp" FOR APPEND AS #1
DO
IF _EXIT THEN CLOSE: KILL "t3mpdata.tmp": _DELAY 1: SYSTEM
LOOP
Note: If you have a file named t3mpdata.tmp change the file name!


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link