Diferencia entre revisiones de «Programación en Ada/Unidades predefinidas/Ada.Text IO»

Contenido eliminado Contenido añadido
Agregado un tema de portabilidad
→‎Portabilidad: Algunas matizaciones menores
Línea 144:
 
==Portabilidad==
Un programa hecho en Ada usando la librería Ada.Text_IO debería poderse compilar sin problemas (si no se usan librerías propias del sistema) tanto en sistemas Windows como en sistemas Unix (siincluyendo noel secada usanvez libreríasmás propiaspopular del[[w:GNU/Linux|GNU/Linux]]) sistema). Sin embargo, puede que su funcionamiento no sea igual en ambos sistemas porsi no se tienen en cuenta lasciertas diferencias en sus consolas.
 
Por ejemplo, todos los sistemas [[w:Unix|Unix]] soportasoportan el estándardestándar de [[w:en:ANSI escape code|terminal ANSI]], mientras que en Windows ME, NT, 2000 y XP la consola no es compatible con ANSI (aunque sees puedeposible configurarconfigurarlo comocargando talel modificando''driver'' ciertos archivos[[w:en:ANSI.SYS|ANSI.SYS]]).
Además el salto de linea es diferente en Unix y en Windows: en sistemas Unix consta de un carácter y en Windows de dos.
A la hora de programar, has de tener en cuentas algunas diferencias:
 
* El salto de linealínea en sistemas Unix es AsciiASCII.LF. En windowsWindows es AsciiASCII.LF+Ascii & ASCII.CR. Sin embargo usando Get_Line, End_Of_Line y Put_Line se asegura portabilidad en este aspecto.
* El procedimiento ''Get_Immediate'' en Windows captura el carácter sin mostrarlo en pantalla. En Unix se captura el carácter pero hay un "eco" y se muestra el carácter en pantalla. Por tanto si deseas que el carácter pulsado se vea en Windows, a continuación del ''Get_Immediate'' debes hacer un ''Put'' del carácter. Así mismo si en LinuxUnix no deseas que se vea el carácter, debes borrandoborrarlo con :
Put(AsciiASCII.Bs & ' ' & AsciiASCII.Bs);
* Algunas funciones de '''Ada.Text_IO''' no funcionan correctamente en Windows, como el procedimiento ''New_Page''.
* AlgunosEl carácterescarácter puedende control asociado a ciertas teclas puede variar entre Unix y Windows. Por tanto si tu programa intenta detectar pulsaciones de teclas específicas, como 'Enter', etc. deberás adecuar el carácter con el que se identifica la tecla. Algunos ejemplos:
Intro: character:=AsciiASCII.Cr; {{Ada/--|Windows}}
Intro: character:=AsciiASCII.Lf; {{Ada/--|Unix}}
 
Backspace: character:=Ascii.Bs; {{Ada/--|Windows (tecla de borrar)}}
Backspace: character:=Ascii.Del; {{Ada/--|Unix}}
 
Backspace: character:=AsciiASCII.Bs; {{Ada/--|Windows (tecla de borrar)}}
Backspace: character:=AsciiASCII.Del; {{Ada/--|Unix}}
 
Debes tener esto en cuenta si deseas hacer portable tu programa, y que funcione tanto en Unix como en Windows. Por lo tanto recomendamos que pruebes la aplicación en ambos sistemas si es posible, para asegurar su buen funcionamiento.
Si deseas más funciones para la consola, y ver sus diferentes implementaciones en UnixLinux y Windows, puedes mirar el paquete [http://www.ctr.unican.es/asignaturas/lan/pantalla_ansi.html Pantalla_ansi].
 
==Manual de referencia de Ada==