Etiquetas: gpc
Abrir archivos en Pascal: GPC y FPC
por e1kio el May.18, 2010, en Informática
Abrir un archivo en Pascal no es tan sencillo como pueda parecer porque cada implementación del lenguaje lo hará a su manera. En GNU Pascal Estándar Ampliado (ISO 10206), se deben programar unas funciones que hagan el trabajo sucio. También he contemplado la posibilidad de que el archivo no exista previamente en el directorio del programa y por eso hay dos funciones muy similares: ExisteFicheroTexto y EnlazaFicheroTexto. Aquí está el código:
function ExisteFicheroTexto (nombre: tNombreFichero): boolean;
{Objetivo: Comprueba si existe un fichero con nombre tNombreFichero
PreCD: El fichero es externo (bindable)
PosCD: Devuelve TRUE si existe o sino FALSE}
var b: bindingtype; f: tFicheroTexto;
begin
unbind (f); {desenlaza f de enlaces previos si hay}
b := binding (f); {ínicia b}
b.name := nombre;
bind (f, b); {enlaza la variable f con el fichero argumento}
b := binding (f); {actualiza b}
ExisteFicheroTexto := b.existing;
end;
function EnlazaFicheroTexto (var f: tFicheroTexto; nombre: tNombreFichero): boolean;
{Objetivo: Enlaza un fichero tFicheroTexto
PreCD: El fichero es externo (bindable)
PosCD: Devuelve TRUE si ha podido enlazarlo o sino FALSE}
var b: bindingtype;
begin
unbind (f); {desenlaza f de enlaces previos si hay}
b := binding (f); {inicia b}
b.name := nombre;
bind (f, b); {enlaza la variable f con el fichero argumento}
b := binding (f); {actualiza b}
EnlazaFicheroTexto := b.bound;
end;
En FreePascal la cosa es mucho más simple, bastará con utilizar la librería sysutils y dos palabras reservadas: FileExists y Assign. El código para un archivo prueba.txt sería:
if FileExists ('prueba.txt')
then begin
{$i-} {Desactiva la comprobacion de errores de entrada/salida}
assign(f, 'prueba.txt');
{$i+} {Activa la comprobacion de errores de entrada/salida}
if (IoResult <> 0)
then begin
writeln('Fichero prueba.txt no enlazado');
halt(1); {Termina el programa}
end
else writeln ('Fichero prueba.txt enlazado');
end
else writeln ('Fichero prueba.txt no existe');
He subido el código fuente de los dos programas para abrir ficheros a modo ejemplo en los que esto se puede ver más detalladamente.
Compilador de Pascal en Windows al estilo GNU/Linux
por e1kio el Feb.20, 2010, en FIC, Informática
Nuestro profesor de programación proporciona siempre a los alumnos nuevos un manual de Pascal Estandard ISO 10206 (Extendido) con un montón de información concisa sobre las palabras reservadas del lenguaje y su uso. Además al final siempre agrega un pequeño tutorial sobre como instalar los compiladores en máquinas con Debian y con Windows. Para el sistema de Microsoft, recomienda un IDE que se puede descargar desde http://www.gnu-pascal.de/binary/mingw32/. Sin embargo, este entorno integrado instala además otros programas accesorios (me viene a la cabeza un recurrente creador de asistentes de instalación o unos programas de ejemplo listos para compilar) y esto puede que no nos guste tanto. A mi personalmente me gusta más la forma de trabajo de GNU/Linux, especialmente si usamos una distro como Ubuntu y tenemos instalado gEdit y el compilador “gpc”. Basta con tener el editor y el compilador, sin llenar de cosas innecesarias nuestro disco duro, y además el resaltado de sintaxis de gEdit es eficiente y visualmente mucho más claro que el del entorno integrado.
Pero para aquellos que se sientan más cómodos trabajando en Windows (que no es malo por sí mismo, sino distinto a Ubuntu), podemos lograr deshacernos del IDE y escribir nuestros programas de forma mucho menos incómoda. Vamos a tener que bajarnos dos cosas:

1. Las librerías de MinGW (Minimal GNU for Windows) obtenibles desde Sourceforge: http://sourceforge.net/projects/mingw/files/
2. Los archivos mínimos del compilador GPC para Windows obtenibles desde la página oficial: http://gnu-pascal.de/contrib/chief/win32/mingw32/3.4.5/gpc-20070904.i386-pc-mingw32.tar.gz
Es una lástima que estos últimos no se actualicen desde 2007, pero bastaría con echar un vistazo de vez en cuando a http://www.gnu-pascal.de/binary/mingw32/ y revisar si en la categoría “GPC Snapshots and releases (Stable)” aparece algún archivo más reciente que el “gpc-20070904.i386-pc-mingw32.tar.gz” de Septiembre de 2007.
En cualquier caso, por ahora nos vale con esto. Una vez los tengamos descargados, iniciamos la instalación de las librerias GNU. Basicamente con dejar todas las opciones por defecto será suficiente. Las pantallas clave son las siguientes, y hay que seleccionar las opciones que aquí se ven:

Si descomprimimos el archivo del compilador, encontraremos una carpeta llamada precisamente “mingw” y dentro de la cual habrá las siguientes carpetas: bin, doc, info, lib, libexec, man.
Todas estas las copiaremos al directorio donde hemos instalado MinGW, que por defecto es “C:\Mingw\” donde encontraremos unas exactamente iguales y tendremos que sobreescribirlas.

Ahora ya están las librerías GNU y el compilador instalados y funcionan a la perfección asi que sólo nos falta un último paso: hacer que, estemos en el directorio en el que estemos, podamos invocarlos con la orden apropiada.
Para conseguirlo tenemos que agregar la ruta donde están al PATH del sistema operativo; lo que significa que cada vez que ejecutemos el comando “gpc“, el SO buscará ese programa entre sus carpetas y tambien las que haya en el PATH. Basta con hacer clic sobre “Mi PC” con el botón derecho y clicar en “Propiedades“. Luego, bajo la pestaña “Opciones avanzadas” pinchamos en “Variables de entorno“. Dentro de esta nueva ventana, debemos modificar la linea PATH y agregar al final un punto y coma (si es que no lo hay) que separe las rutas actuales de la nueva que vamos a introducir, y que no es otra que “C:\Mingw\bin“, que es donde se encuentra el programa compilador.

Ahora pinchamos aceptar en todas las ventanas y ya podremos utilizar el compilador desde cualquier ventana del Símbolo de sistema; las instrucciones son las mismas que en GNU/Linux:
gpc --extended-pascal programa.pas
gpc --extended-pascal -c modulo.pas
En la siguiente captura se puede ver un ejemplo donde he compilado un modulo y dos programas:

Al igual que en su sistema nativo, se genera un ejecutable llamado “a” que aquí tiene naturalmente extensión “.exe“. Pude comprobar que esto tambien es efectivo en Windows 7 (y me imagino que tambien en Vista) salvando la diferencia de que “Mi PC” se llama equipo y en sus propiedades hay que pinchar antes en la opción que aparece en la barra lateral llamada “Configuración avanzada del sistema“.
Otra buena noticia. De regalo se instala el GCC (compilador GNU de C) ya que en realidad GPC no es un compilador, sino que preprocesa el codigo fuente de Pascal a codigo fuente en C para luego invocar a gcc y compilar; asi que si has seguido todos los pasos, esto tambien preparará tu sistema para compilar programas escritos en C en este sistema operativo de forma “Ubuntu-like“.
Esta entrada no estaría completa sin un editor de texto apropiado. Y ya que queremos que se asemeje a Ubuntu, instalemos una versión para Windows del genial gEdit. Gnome la proporciona en su sitio FTP y está disponible en ftp://ftp.gnome.org/pub/GNOME/binaries/win32/gedit/. Con escojer la carpeta y el instalador correspondientes a la versión más reciente, ya podremos instalarlo y usarlo sin problemas.
Programas que instalar en Ubuntu
por e1kio el Feb.10, 2010, en Informática
Cuando terminas de instalar Ubuntu y configurar el idioma, las opciones de energía, etc. etc. puede que hagan falta algunos programas más. A mi me encanta usar apt en la línea de comandos. Abro un terminal y escribo:
sudo apt-get install gpc fpc ocaml msttcorefonts wine dosbox playonlinux vlc mozilla-plugin-vlc abiword gnumeric fbreader cheese prelink preload unrar gparted hexedit bwbasic nast hardinfo emesene lynx gnome-games gnome-hearts
Compiladores y programacion
gpc fpc: compiladores GNU Pascal y FreePascal, para las asignaturas de Pro y EDI
ocaml: es el conjunto de compiladores y librerías relativos al lenguaje ocaml. Para PD.
bwbasic: es un intérprete de BASIC.
hexedit: editor hexadecimal. Lo instalé para ver el contenido de archivos binarios generados por los programas de las prácticas de la facultad.
Multimedia
msttcorefonts: aunque creo que han cambiado el nombre de este paquete, sigue funcionando este alias. Son fuentes de texto importadas desde Windows en su mayor parte y ayudarán a ver correctamente páginas y programas Windows ejecutados con wine.
wine: el soporte de aplicaciones Windows en GNU/Linux.
vlc mozilla-plugin-vlc: es un reproductor excelente para video y audio. El plugin se explica por si solo.
fbreader: lector de e-books compatible con varios formatos, volteo de página, etc. Muy práctico en equipos de poco tamaño.
cheese: programa para tomar imágenes o videos desde una webcam.
Ofimática
abiword: útil sobretodo en equipos con pocos recursos. Es un procesador de textos compatible con Word y OpenOffice.org Writer, entre otros, que carga bastante rápido.
gnumeric: es una hoja de cálculo compatible con Excel y OpenOffice.org Calc.
Juegos
dosbox: un sencillo emulador DOS para juegos antiguos.
playonlinux: aporta unas cuantas características para poder jugar en GNU/Linux a juegos de Windows.
gnome-games gnome-hearts: paquetes de juegos para escritorio gnome
Utilidades
prelink preload: estos dos programas aceleran la carga de las librerías de sistema más solicitadas.
unrar: soporte para descomprimir archivos rar.
gparted: para gestionar las particiones de los discos duros.
Redes
nast: (Network Analyzer Sniffer Tool) analiza el tráfico de una red, lo que permite ver intrusos en una WiFi
hardinfo: presenta resumenes exahustivos del sistema y permite correr benchmarks
emesene: cliente para mensajería instantánea más completo que el Empathy
lynx: navegador en modo texto para el terminal recomendado por google para webmasters.
Además…
Me gusta instalar Spotify a través de Wine. Aquí se vé como lo hago: Spotify en Ubuntu
