Console Mode Pascal/es
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
magyar (hu) │
日本語 (ja) │
русский (ru) │
slovenčina (sk) │
Programación con Pascal en modo consola
por User:Kirkpatc
Iniciando el trabajo
Muchos de nosotros escribíamos programas en Pascal mucho antes de que los interfaces gráficos de usuario (GUIs) y los entornos de desarrollo integrados (IDEs) se pusieran de moda. Muchos otros son principiantes en programación en Pascal y necesitan poder probar las herramientas básicas del lenguaje. Otros necesitan escribir aplicaciones de consola o en modo de texto para realizar tareas complejas de control del sistema.
Lazarus dispone de un entorno ideal para aprender Pascal, y para desarrollar programas en modo texto. Todas las funcionalidades del IDE se pueden utilizar, incluyendo el editor de código con su resaltado de sintaxis, acceso a las librerías, búsquedas complejas y herramientas de completado de código y comprobación de sintaxis. Si no se quiere un formulario con componentes visuales no es necesario tenerlo, pero el editor de Lazarus es un gran entorno para desarrollar programas. Puedes compilar y ejecutar programas durante el desarrollo, sin abandonar el Editor.
Para dar inicio a un programa en modo consola, hay que ir al Menú principal y en la opción Proyecto seleccionar Nuevo Proyecto ... y en la ventana que aparece seleccionar Programa, Aplicación de consola o Programa personalizado. El IDE no generará todos los ficheros que están asociados con una aplicación gráfica completa y no abrirá la ventana del Inspector de objetos y si abrirá el Editor de código con el esqueleto del programa, esperando que introduzcamos nuestro código.
Programa personalizado
Un programa Pascal muy sencillo. Seleccionaremos esta opción si queremos hacerlo todo nosotros o para realizar algunas pruebas rápidas y eliminar los ficheros a continuación.
Programa
Parecido al anterior, pero el IDE nos ayudará más. Por ejemplo cuándo añadimos un unidad el IDE automáticamente añade el nombre de la unidad en la sección uses. Este comportamiento está definido en las opciones de proyecto. Así podemos alternar entre los tipos Programa y Programa personalizado en cualquier momento.
Un ejemplo para principiantes: <delphi> program Proyecto1;
{$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { puedes añadir unidades trás esto}; begin writeln('¡Hola Mundo!'); readln; end. </delphi>
Aplicación de consola
Esta opción creará un programa con una nueva clase derivada de TCustomApplication, la cual proporciona gran parte de la funcionalidad común y convierte la programación en línea de comando en algo muy fácil. Por ejemplo comprobando los parámetros pasados en la línea de comando, escribiendo ayudas, comprobando las variables de entorno y gestionado las excepciones. Todos los programas de la LCL utilizan esta funcionalidad automáticamente.
Compilar
Una vez finalizado el programa (o una parte del mismo) lo podemos compilar y ejecutar con la opción Ejecutar > Ejecutar del menú principal, pulsando sobre el triangulo verde del panel de botones o con la tecla F9. Todos los mensajes de compilación ( avisos, informes de progreso o errores) aparecerán en la ventana de Mensajes, y con suerte eventualmente veremos un único mensaje que diga:
El proyecto "project1" se ha construido correctamente. :)
Ejecutar
¡Pero! ¿dónde está el programa?
Si no hemos guardado el proyecto, el IDE lo pone el el directorio temporal del sistema (/tmp en linux, C:\temp en windows, ver Entorno > Opciones del Entorno > Directorio para construir proyectos de prueba).
Si hemos guardado el proyecto, el programa se creará en el mismo directorio donde hayamos guardado el archivo lpi del proyecto.
Podemos ejecutar el programa desde una consola (terminal), utilizando un cd para cambiar al directorio deseado y escribir el nombre del programa. En *nix probablemente tengamos que escribir ./Nombredelprograma, ya que no se encuentra en la ruta por defecto (PATH).
Ir de la consola al IDE y viceversa puede ser un poco tedioso. Por suerte hay una forma de abrir la ventana del terminal directamente desde el IDE de Lazarus.
Run in IDE
From the Main Menu, select Run -> Run Parameters, then check the box for "Use launching application". The first time you do this and try the Compile/Run sequence, you will probably get a rude message to say
"xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".
If this happens, you need to change the permissions on the appropriate file (for example using chmod +x filename, or using the Windows utility for changing permissions); you might have to do this as root. After this, each time you launch your program, a console box will appear and all your text i/o (readln, writeln etc) will appear in it.
After your program has finished execution, a message "Press enter" appears on the screen. Thus any output your program generated will remain on the screen until you have had a chance to read it; after you press 'enter' the console window closes.
Examples
You can use the Lazarus editor to try out all the examples in the standard Pascal text-books, or you can write your own. Some of the most useful procedures are those for executing system commands or for running other programs (which may have been written in Pascal, C or Perl, or may be shell or Batch scripts).
Execute shell command
Here is an example for a Custom Program or Program:
Program TryShell; uses classes, unix; var S: longint; begin S := fpsystem ('/bin/ls -la *.p*'); //lists .pp, .pas, .php, .png etc in current directory writeln ('Program exited with status : ', S) end.
Example: update fpc and lazarus
Rather more complex commands can be executed. For example, if you have already checked out the SVN repositories for FPC and Lazarus (see fpc buildfaq) you could keep your FPC and Lazarus source files up-to-date by retrieval from the SVN repository with the following sequence of calls:
Program LazUpdate; uses classes, unix; var s : longint; begin S := fpsystem ('cd /usr/local/src/fpc/devel/fpc ; make clean'); S := fpsystem ('cd /usr/local/src/fpc/devel/lazarus ; make clean'); S := fpsystem ('cd /usr/local/src/fpc/devel ; svn update fpc >& ~/cvscheckout.log'); S := fpsystem ('cd /usr/local/src/fpc/devel ; svn update lazarus >& ~/cvslaz.log'); end.
Note that issuing the command
fpsystem ('cd /somedirectory')
followed by
fpsystem ('do something in that subdirectory')
doesn't work, because after each fpsystem function call the execution of the program returns to the directory it started in; so we need to include multiple statements per line within our calls to shell.
Of course, you don't have to enter every command as a separate line of Pascal; you could create a script file like this (from fpc buildfaq):
#!/bin/sh cd /usr/local/src/fpc/devel cd fpc make clean cd .. cd lazarus make clean cd .. svn up fpc >& ~/cvscheckout.log svn up lazarus >& ~/cvslaz.log
Name it updatelaz.sh, and then call it from a Pascal program thus:
Program LazUpdate1; uses classes, unix; var S : longint; begin S := fpsystem ('updatelaz.sh') end.
Parámetros de la línea de órdenes
Ver Parámetros de la línea de órdenes y variables de entorno.
Contribuyentes originales
Esta página se ha convertido desde la versión epikwiki. Original de User:Kirkpatc. Traducción de User:Iskraelectrica. Enero de 2009.