Difference between revisions of "Console Mode Pascal/ru"
Line 14: | Line 14: | ||
Очень маленькая программа на pascal. Выбирается, если нужно сделать все самостоятельно, или выполнить быструю проверку, а затем удалить файлы. | Очень маленькая программа на pascal. Выбирается, если нужно сделать все самостоятельно, или выполнить быструю проверку, а затем удалить файлы. | ||
− | === | + | === Программа === |
− | + | Похоже на "Программа пользователя", но IDE задействован чуть больше. Например, если добавить другой модуль, IDE автоматически добавит его имя в секцию uses. Это действие определяется в опциях проекта. Можно перемещаться в любое время между режимами 'Программа' и 'Программа пользователя'. | |
− | + | Пример для начинающих: | |
<pre> | <pre> | ||
program Project1; | program Project1; |
Revision as of 09:48, 5 October 2009
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
magyar (hu) │
日本語 (ja) │
русский (ru) │
slovenčina (sk) │
Программирование консольного режима в Pascal
Многие программы написаны на Pascal задолго до появления графических интерфейсов пользователя (GUI) и интегрированных оболочек разработки (IDE), ныне ставших модными. Однако начинающим программировать на Pascal желательно попробовать основные инструментальные средства языка. Часто бывает необходимо писать консольные или текстовые приложения для выполнения сложных системных управляющих задач.
Lazarus является идеальной средой для изучения Pascal и разработки программ текстового режима. Может использоваться вся функциональность интегрированной оболочки разработчика, включая редактор исходных текстов с подцветкой синтаксиса, доступ к библиотекам, инструменты сложного поиска и кодов завершения, проверку синтаксиса. Если форма с визуальными компонентами не нужна, редактор исходных текстов Lazarus – хорошая среда для разработки программы. В процессе разработки можно компилировать и выполнять программу, не покидая редактор.
Для запуска программы консольного режима необходимо в основном меню выбрать Проект -> Создать Проект, затем выбрать Программа, Консольное приложение или Программа пользователя. IDE не будет генерировать дополнительных файлов для полного графического приложения, и не откроет окно Инспектора Объектов, но откроет редактор исходного текста со скелетом структуры программы и будет ожидать ввода текста программы.
Программа пользователя
Очень маленькая программа на pascal. Выбирается, если нужно сделать все самостоятельно, или выполнить быструю проверку, а затем удалить файлы.
Программа
Похоже на "Программа пользователя", но IDE задействован чуть больше. Например, если добавить другой модуль, IDE автоматически добавит его имя в секцию uses. Это действие определяется в опциях проекта. Можно перемещаться в любое время между режимами 'Программа' и 'Программа пользователя'.
Пример для начинающих:
program Project1; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; begin writeln('Hello World!'); readln; end.
Console Application
This creates a program with a new class derived from TCustomApplication. TCustomApplication provides a lot of the common things and makes programming command line utilities easy. For example checking command line options, writing help, checking environment variables and exception handling. All LCL programs use this automatically.
Compile
When you have finished your program (or program fragment) you can compile and run it by selecting Run -> Run from the Main Menu or clicking on the Green (Run) triangle symbol in the Button Bar. Any compiler messages (warnings, progress reports or error messages) will appear in the Message Box, and hopefully there will eventually be a message to say
'Project "Project1" successfully built.:)'.
Run
But where is the program??!!
If you have not yet saved the program, then the IDE put it into the temporary directory (e.g. /tmp under linux, C:\temp under windows, see Environment Options / Files / Directory for building test projects).
If you already saved the project, then the program was created in the same directory, where you saved the project1.lpi file.
You can execute the program by going to a console (terminal) window, use cd to change to the directory and typing the name of the program (in Unix/Linux, if it is in the current directory you will probably have to type
./Project1
as it won't be found in the standard PATH). However, it can be very inconvenient to keep skipping out of the Lazarus Editor and into a terminal window and back again. Fortunately, there is a mechanism that allows a terminal window to be opened from within the Lazarus environment.
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
Приведен пример для Custom Program или 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 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 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.