TEIMSI
Plataforma del desarrollador de textos programados
Inicio|Utilidades|Foro|Documentación

Indice de contenido -> Capítulo 15 - Funciones para programas en modo de consola


Las funciones descritas en este capítulo son importantes para programas ejecutables con modo consola, para darle esta modalidad a un programa se procederá (a modo ejemplar) de la siguiente forma:

1- Crear el archivo del proyecto, por ejemplo "consola.tsi" y editarlo con el compilador TEIMSI.

2- Escribir en el archivo las siguientes 4 líneas:

		console_cls()
		console_locate(10,10)
		console_print("Hola mundo!")
		console_waitkey()

3- Presionar la tecla F4 (o el comando "Guardar y sólo Compilar script TEIMSI" del menú Compilar).

4- Editar el archivo "base_exe.asm" en la carpeta "consola_asm_files", ubicar y reemplazar las siguientes líneas:


			format PE GUI 4.0
			;format PE console

Comentar la primera y descomentar la segunda:

			;format PE GUI 4.0
			format PE console

Ubicar:

			;	call console_start_p

descomentar a:

				call console_start_p

Ahora ubicar:

			;	call console_end_p

descomentar a:

				call console_end_p

5- Correr el archivo create.bat

6- Correr el programa consola.exe ubicado en la carpeta del archivo consola.tsi.

Nota: se debería hacer una copia del archivo "base_exe.asm" una vez modificado manualmente, porque cada vez que se compile el script TEIMSI original será reemplazado por el archivo predeterminado.

Las siguientes funciones se describen a continuación:

1)- console_cls()

2)- console_locate(x,y)

3)- console_print(str)

4)- console_println(str)

5)- console_println2(str)

6)- console_waitkey()

7)- console_waitkeyex()

8)- console_alert(x,y,str)

9)- console_inputstr(len)

Nota: El código fuente que realizan las funciones está en el archivo "cont_console.asm" de la carpeta "engine" junto el programa Editor de TEIMSI.




console_cls

La función "console_cls", borra la pantalla de la consola.


Sintaxis
console_cls()
 

Parámetros
(ninguno)
 

Valor devuelto
(ninguno)
 

Ver también <<console_print>>


Volver arriba

console_locate

La función "console_locate", cambia la posición del cursor de texto en la consola.


Sintaxis
console_locate(x_columna,y_fila)
 

Parámetros
x_columna
Variable tipo número entero de 32 bits de TEIMSI.
 
y_fila
Variable tipo número entero de 32 bits de TEIMSI.
 

Valor devuelto
cadena
Variable tipo cadena de TEIMSI.
 

Ejemplo:



	console_cls()
	for(var k=0;k<65;k++){
		console_locate(k,parseint(13+8*sin(k/5)))
		console_print("x")
	}
	console_print(_nl)
	console_print("Presionar una tecla.")
	console_waitkey()


Ver también <<console_cls>>, <<console_print>>, <<console_locate>>, <<console_waitkey>>


Volver arriba

console_print

La función "console_print", imprime un texto tal como está en la consola en la posición actual del cursor.


Sintaxis
console_print(cadena)
 

Parámetros
cadena
Variable tipo cadena de TEIMSI.
 

Valor devuelto
(ninguno)
 

Ver también <<console_locate>>


Volver arriba

console_println

La función "console_println", imprime un texto seguido de un retorno de nueva línea (chr(13)+chr(10)) en la consola en la posición actual del cursor.


Sintaxis
console_println(cadena)
 

Parámetros
cadena
Variable tipo cadena de TEIMSI.
 

Valor devuelto
(ninguno)
 

Ver también <<console_locate>>


Volver arriba

console_println2

La función "console_println2", imprime un texto seguido de un retorno de nueva línea (chr(13)+chr(10)) y luego una cadena que dice "Presionar una tecla para continuar ..." en la consola en la posición actual del cursor. Luego de imprimir el texto espera a que se presione una tecla.


Sintaxis
console_println2(cadena)
 

Parámetros
cadena
Variable tipo cadena de TEIMSI.
 

Valor devuelto
cadena
Variable tipo cadena de TEIMSI.
 

Ver también <<console_locate>>, <<console_alert>>


Volver arriba

console_waitkey

La función "console_waitkey", espera que se presione una tecla cualquiera y devuelve un entero con el código ASCII de la tecla presionada.


Sintaxis
console_waitkey()
 

Parámetros
(ninguno)
 

Valor devuelto
numero_decimal
Variable tipo número de coma flotante de TEIMSI.
 

Ejemplo:



	while(true){
		var k=console_waitkey()
		console_println("Presionada: " + k)
		if(k==27){break}				//	Si la tecla es "Escape", sale del búcle.
	}


Ver también <<console_waitkeyex>>


Volver arriba

console_waitkeyex

La función "console_waitkeyex", espera a que se presione o suelte una tecla devolviendo una variable tipo matriz de TEIMSI con 4 enteros; cada ítem (número entero) indica cierta información sobre

el evento.


Sintaxis
var data_arr=console_waitkeyex()
 

Parámetros
Valor devuelto
matriz
Variable de tipo matriz con cuatro ítems de tipo entero.
 


	El primer entero de la matriz devuelta, indica si la tecla se presionó (valor 1) o soltó (valor 0).

	El segundo indica el código de la tecla (keycode) según la siguiente tabla que tiene los nombres de teclas (en inglés).

			back,8            | numpad2,98        | f12,123           | b,66              
			clear,12          | numpad3,99        | f13,124           | c,67              
			delete,46         | numpad4,100       | f14,125           | d,68              
			down,40           | numpad5,101       | f15,126           | e,69              
			end,35            | numpad6,102       | f16,127           | f,70              
			escape,27         | numpad7,103       | f17,128           | g,71              
			home,36           | numpad8,104       | f18,129           | h,72              
			insert,45         | numpad9,105       | f19,130           | i,73              
			lbutton,1         | multiply,106      | f20,131           | j,74              
			mbutton,4         | add,107           | f21,132           | k,75              
			rbutton,2         | separator,108     | f22,133           | l,76              
			left,37           | subtract,109      | f23,134           | m,77              
			pause,19          | decimal,110       | f24,135           | n,78              
			pgdn,34           | divide,111        | numlock,144       | o,79              
			pgup,33           | f1,112            | 0,48              | p,80              
			print,42          | f2,113            | 1,49              | q,81              
			return,13         | f3,114            | 2,50              | r,82              
			right,39          | f4,115            | 3,51              | s,83              
			shift,16          | f5,116            | 4,52              | t,84              
			snapshot,44       | f6,117            | 5,53              | u,85              
			space,32          | f7,118            | 6,54              | v,86              
			tab,9             | f8,119            | 7,55              | w,87              
			up,38             | f9,120            | 8,56              | x,88              
			numpad0,96        | f10,121           | 9,57              | y,89              
			numpad1,97        | f11,122           | a,65              | z,90              

		El tercer ítem (de índice 2) en la matriz es un entero que expresa el código ASCII del carácter de la tecla presionada.  

		El cuarto ítem (de índice 3) llamado "entero_banderas" es un entero que tiene las banderas de booleanos mediante ciertos bits que indican el estado (presionadas o no) de las teclas "Shift", "Control", "Alt" y otras más que se muestran en la siguiente tabla, el número que le sigue a la tecla especial tiene activado sólo el bit correspondiente a dicha tecla (en el sistema binario) ver el ejemplo de mostrado.
	
		(Tecla especial)	(Entero con el bit que la representa activado).
	
			Shift		|	4096		= 0001000000000000y (número en sistema binario).
			Ctrl		|	2048		= 0000100000000000y
			Alt		|	512		= 0000001000000000y
			Bloq mayús	|	32768		= 1000000000000000y
			Bloq num	|	8192		= 0010000000000000y
			Bloq despl	|	16384		= 0100000000000000y
		
		Las variables constantes predefinidas: _waitkey_shift, _waitkey_ctrl, _waitkey_alt, _waitkey_bmayus, _waitkey_bnum, _waitkey_bdesp; valen los enteros mostrados en la tabla anterior.
	
	También las variables constantes predefinidas: _waitkey_isdown, _waitkey_scancode, _waitkey_asciichar, _waitkey_ctrlkeystate; valen los enteros 0,1,2,3 respectivamente y se usan para indicar los índices de la matriz.
	

Ejemplo:



	if(_console_handle==0){
		alert("Es necesario que el programa esté en modo consola.!")
		sys.quit()
	}
	// _waitkey_ctrlkeystate=3
	// _waitkey_ctrl=2048

	var keydata=0
	while(true){
		console_cls()
		console_locate(5,5)
		if(keydata!=0){
			var banderas=keydata[_waitkey_ctrlkeystate]

			keydata[_waitkey_ctrlkeystate]=banderas + "="+strtohex(binstrpack(longpack(keydata[_waitkey_ctrlkeystate])))		// Mostrar una representación binaria de entero con las banderas.

			console_println(implode(_nl,keydata)+ _nl)		//	Mostrar los ítems enteros de la matriz.

			if( (banderas & _waitkey_ctrl) != 0){		//	Muestra si se presionó la tecla control.
				console_println2("Has presionado la tecla Control!")
			}
		}
		var keydata=console_waitkeyex()
		if(keydata[_waitkey_scancode]==27){break}			//	Espera a Tecla Esc.
	}


Ver también <<console_waitkey>>


Volver arriba

console_alert

La función "console_alert", ubica el cursor en la posición indicada (x,y) por los primeros dos parámetros y luego realiza la misma tarea de la función "console_println2" con el tercero.


Sintaxis
console_alert(x_columna,y_fila,cadena)
 

Parámetros
x_columna
Variable tipo número entero de 32 bits de TEIMSI.
 
y_fila
Variable tipo número entero de 32 bits de TEIMSI.
 
cadena
Variable tipo cadena de TEIMSI.
 

Valor devuelto
(ninguno)
 

Ver también <<console_println2>>


Volver arriba

console_inputstr

La función "console_inputstr", permite ingresar al usuario un texto (cadena) desde el teclado.


Sintaxis
console_inputstr(numero_entero)
 

Parámetros
numero_entero
Variable tipo número entero de 32 bits de TEIMSI. Es el tamaño máximo del búfer y cadena de entrada.
 

Valor devuelto
cadena
Variable tipo cadena de TEIMSI.
 

Ejemplo:


	console_print("Ingresa un texto: ")

	var intxt=console_inputstr(100)

	console_println2(_nl+"Se ha ingresado :"+ intxt)



Ver también <<console_print>>, <<console_println2>>


Volver arriba