mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|       Member()
 | |
|       Include('ConsoleSupport.inc'),ONCE
 | |
| 	  Map
 | |
|         MODULE('32-bit Windows API')
 | |
|             ! General functions
 | |
|             GetLastError(),DWORD,PASCAL
 | |
|  
 | |
|             ! Console functions
 | |
|             GetStdHandle(DWORD),HANDLE,PASCAL,PROC,RAW
 | |
|             WriteConsole(Handle,Long,Dword,long,long),bool,Raw,Pascal,name('WriteConsoleA')
 | |
|             ReadConsole(Handle,Long,Dword,long,long),bool,Raw,Pascal,name('ReadConsoleA')
 | |
|             SetConsoleTitle(Long),Bool,Raw,Pascal,name('SetConsoleTitleA')
 | |
|             GetConsoleTitle(Long,dword),Bool,Raw,Pascal,name('GetConsoleTitleA')
 | |
|             SetConsoleMode(Handle,dWord),BOOL,RAW,PASCAL
 | |
|             GetConsoleMode(Handle,Long),BOOL,RAW,PASCAL
 | |
|         End
 | |
|       End 
 | |
|       
 | |
| ConsoleSupport.Construct PROCEDURE
 | |
| 
 | |
|   CODE
 | |
| 
 | |
| ConsoleSupport.Destruct PROCEDURE
 | |
| 
 | |
|   CODE
 | |
| 
 | |
| ConsoleSupport.Init				   PROCEDURE () !,BYTE,VIRTUAL 
 | |
|   CODE
 | |
| 
 | |
|     SELF.OutputHandle = GetStdHandle(STD_OUTPUT_HANDLE)
 | |
|     If SELF.OutputHandle = INVALID_HANDLE_VALUE
 | |
|         Halt(1,'Unable to get output handle (' & GetLastError() & ')')
 | |
|         RETURN INVALID_HANDLE_VALUE
 | |
|     End
 | |
|  
 | |
|     SELF.InputHandle = GetStdHandle(STD_INPUT_HANDLE)
 | |
|     if SELF.InputHandle = INVALID_HANDLE_VALUE
 | |
|         Halt(2,'Unable to get console input handle (' & GetLastError() & ')')
 | |
|         RETURN INVALID_HANDLE_VALUE
 | |
|     End
 | |
|  
 | |
|     If ~SetConsoleMode(SELF.InputHandle,ENABLE_PROCESSED_INPUT )
 | |
|         Halt(3,'Unable to set console mode (' & GetLastError() & ')')
 | |
|         RETURN INVALID_OTHER
 | |
|     End
 | |
| 
 | |
|     RETURN FALSE
 | |
| 
 | |
| ConsoleSupport.WriteLine			   PROCEDURE (STRING pText) !,BYTE,PROC,VIRTUAL 
 | |
|   CODE
 | |
|     SELF.TextBuffer = SELF.Prefix & pText & '<13,10>'
 | |
|     If WriteConsole(SELF.OutputHandle, ADDRESS(SELF.TextBuffer), LEN(SELF.TextBuffer),ADDRESS(SELF.BytesWritten), NULL) = 0
 | |
|         Halt(4,'WriteConsoleError (' & GetLastError() & ')')
 | |
|         RETURN -1
 | |
|     End
 | |
|     RETURN FALSE
 | |
| 
 | |
| Consolesupport.ReadKey  			   PROCEDURE () !,STRING,PROC,VIRTUAL 
 | |
|   CODE
 | |
|   SELF.WriteLine('Press any key to continue...')
 | |
|   Clear(SELF.InBuffer)
 | |
|   Loop
 | |
|     IF ReadConsole(SELF.InputHandle,Address(SELF.InBuffer),100,Address(SELF.BytesRead),NULL) = 0 THEN
 | |
|       Halt(5,'Error on read console (' & GetLastError() & ')')
 | |
|       Break
 | |
|     End
 | |
|   Until SELF.BytesRead > 0
 | |
|   RETURN SELF.InBuffer |