Difference between revisions of "Console Mode Pascal/ru"

From Free Pascal wiki
Jump to navigationJump to search
(New page: {{Console Mode Pascal}} == Console-Mode Pascal Programming == by User:Kirkpatc Many of us were writing Pascal programs long before Graphic User Interfaces (GUIs) and Integrated Devel...)
 
(15 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
{{Console Mode Pascal}}
 
{{Console Mode Pascal}}
  
== Console-Mode Pascal Programming ==
+
== Программирование консольного режима в Pascal ==
 
by [[User:Kirkpatc]]
 
by [[User:Kirkpatc]]
  
Many of us were writing Pascal programs long before Graphic User Interfaces (GUIs) and Integrated Development Environments (IDEs) became fashionable. Many others are beginners at Pascal programming and need to be able to try out the basic tools of the language. Still others need to write console- or text-mode applications in order to perform complex system-control tasks.
+
Многие программы написаны на Pascal задолго до появления графических интерфейсов пользователя (GUI) и интегрированных оболочек разработки (IDE), ныне ставших модными. Однако начинающим программировать на Pascal желательно попробовать основные инструментальные средства языка. Часто бывает необходимо писать консольные или текстовые приложения для выполнения сложных системных управляющих задач.  
  
Lazarus provides an ideal environment for learning Pascal, and for developing text-mode programs. All the functionality of the Integrated Development Environment can be used, including the Source Editor with its syntax highlighting, access to the libraries, complex searching and code completion tools, and syntax checking. If you don't want a Form with its visual components, you don't need one, but the Lazarus Source Editor is still a great environment for program development. You can compile and run your program during development, without ever leaving the Editor.
+
Lazarus является идеальной средой для изучения Pascal и разработки программ текстового режима. Может использоваться вся функциональность интегрированной оболочки разработчика, включая редактор исходных текстов с подцветкой синтаксиса, доступ к библиотекам, инструменты сложного поиска и кодов завершения, проверку синтаксиса. Если форма с визуальными компонентами не нужна, редактор исходных текстов Lazarus – хорошая среда для разработки программы. В процессе разработки можно компилировать и выполнять программу, не покидая редактор.
  
To start a console-mode program, go to the Main Menu and select Project -> New Project and then select either '''Program'', '''Console Application''' or '''Custom Program'''. The IDE will not generate all the extra files associated with a full graphic application, and will not open an Object Inspector box, but will open the Source Editor with a skeleton program structure and await your programming input.
+
Для запуска программы консольного режима необходимо в основном меню выбрать Проект -> Создать Проект, затем выбрать '''Программа''', '''Консольное приложение''' или '''Программа пользователя'''. IDE не будет генерировать дополнительных файлов для полного графического приложения, и не откроет окно Инспектора Объектов, но откроет редактор исходного текста со скелетом структуры программы и будет ожидать ввода текста программы.
  
=== Custom Program ===
+
=== Программа пользователя ===
  
A very minimalistic pascal program. Choose this if you want to do everything yourself or just do some quick tests and delete the files soon.
+
Очень маленькая программа на pascal. Выбирается, если нужно сделать все самостоятельно, или выполнить быструю проверку, а затем удалить файлы.
  
=== Program ===
+
=== Программа ===
  
Same as Custom Program, but the IDE helps you a bit more. For example when you add another unit the IDE will automatically add the unitname to the program uses section. This behavior is defined in the project options. So you can go between 'Program' and 'Custom Program' at any time.
+
Похоже на "Программа пользователя", но IDE задействован чуть больше. Например, если добавить другой модуль, IDE автоматически добавит его имя в секцию uses. Это действие определяется в опциях проекта. Можно перемещаться в любое время между режимами 'Программа' и 'Программа пользователя'.
  
An example for complete beginners:
+
Пример для начинающих:
 
<pre>
 
<pre>
 
program Project1;
 
program Project1;
Line 34: Line 34:
 
</pre>
 
</pre>
  
=== 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.
+
Здесь создается программа с новым классом, производным от TCustomApplication. TCustomApplication обеспечивает хорошую основу и делает программирование утилит командной строки довольно простым. Например, проверку опций командной строки, написание справки, проверку переменных окружения и обработку исключений. Все программы LCL автоматически это используют.
  
== 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.:)'.
+
'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).
+
Если Вы ее еще ''не'' сохраняли, то IDE поместил ее во ''временную'' папку (т.е. /tmp под linux, C:\temp под windows, см. Настройки среды / Files / Directory, чтобы проверить настройки проектов).
  
If you already saved the project, then the program was created in the same directory, where you saved the project1.lpi file.
+
Если проект был сохранен, то созданная программа находится в той же папке, где и файл project1.lpi.
  
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
+
Выполнять программу можно из окна консоли (терминала), применив '''cd''' для перехода в нужную папку, и напечатав имя программы (в Unix/Linux, в текущей папке нужно напечатать
  
  ./Project1
+
  ./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.
+
если эта папка не находится в стандартном PATH). Однако довольно неудобно постоянно прыгать из редактора Lazarus в окно терминала и обратно. К счастью, имеется механизм, позволяющий открывать окно терминала из среды Lazarus.
  
== Run in IDE ==
+
== Запуск из 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".   
 
  "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.
+
В этом случае необходимо изменить разрешения для соответствующего файла (например, chmod +x filename, или при помощи утилиты Windows, изменяющей разрешения); для этого необходимы права администратора. После этого при запуске программы появится окно консоли и тексты ввода/вывода в нем.
 
      
 
      
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.
+
По завершении выполнения программы на экране появится сообщение "Press enter". Таким образом диалоги созданной программы останутся на экране, чтобы можно было их прочитать; по нажатии 'enter' окно консоли закроется.
  
== 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).
+
Можно испытать работу редактора Lasarus, попробовав все примеры из обычной книги по языку Pascal, или написав собственный. Наиболее полезные - те, что выполняют системные команды или запускают другие программы (написанные на Pascal, C или Perl, или сценарии оболочки).
  
=== Execute shell command ===
+
=== Выполнение команд оболочки ===
  
Here is an example for a ''Custom Program'' or ''Program'':
+
Приведен пример для ''Custom Program'' или ''Program'':
  
 
<pre>
 
<pre>
Line 86: Line 86:
 
</pre>
 
</pre>
  
=== Example: update fpc and lazarus ===
+
=== Пример: корректировка fpc и 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:
+
Могут выполняться более сложные команды. Например, после посещения хранилища SVN с новейшими версиями FPC и Lazarus (см. [[buildfaq]]) можно иметь исходные версии FPC и Lazarus новейшими, путем взятия из хранилища SVN следующей последовательностью вызовов:
  
 
<pre>
 
<pre>
Line 102: Line 102:
 
</pre>
 
</pre>
  
Note that issuing the command
+
Заметьте, что порядок команд
  
 
  fpsystem ('cd /somedirectory')
 
  fpsystem ('cd /somedirectory')
followed by
+
сопровождаемая
  fpsystem ('do something in that subdirectory')
+
  fpsystem ('что-то делающей в этой папке')
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.
+
не сработает, поскольку после каждого вызова функции fpsystem выполняемая программа возвращается в папку, из которой она запускалась; поэтому нужно в строку вызова оболочки ставить множество операторов.
  
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]]):
+
Конечно, не стоит вводить каждую команду отдельной строкой Pascal; лучше создать сценарий наподобие приведенному ниже (из [[buildfaq]]):
 
<pre>
 
<pre>
 
#!/bin/sh
 
#!/bin/sh
Line 123: Line 123:
 
</pre>
 
</pre>
  
Name it updatelaz.sh, and then call it from a Pascal program thus:
+
Его имя - updatelaz.sh, и он вызывается из программы Pascal так:
  
 
<pre>
 
<pre>
Line 134: Line 134:
 
</pre>
 
</pre>
  
== Command line parameters ==
+
== Примечание для пользователей Windows ==
 +
Традиционно при написании консольных программ в Windows используется кодировка cp866. Если не принять специальных мер, то при написании консольной программы в IDE в консоли вместо русских букв будут выводиться кракозябры. Чтобы получился нормальный русский текст, в окне кода программы нужно нажать правую кнопку мыши и выбрать в контекстном меню "Параметры файла -> Кодировка -> CP866".
  
See [[Command line parameters and environment variables]].
+
== Параметры командной строки ==
 +
 
 +
См. [[Command line parameters and environment variables]].

Revision as of 01:23, 11 June 2015

Deutsch (de) English (en) español (es) suomi (fi) magyar (hu) 日本語 (ja) русский (ru) slovenčina (sk)

Программирование консольного режима в Pascal

by User:Kirkpatc

Многие программы написаны на 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.

Консольное приложение

Здесь создается программа с новым классом, производным от TCustomApplication. TCustomApplication обеспечивает хорошую основу и делает программирование утилит командной строки довольно простым. Например, проверку опций командной строки, написание справки, проверку переменных окружения и обработку исключений. Все программы LCL автоматически это используют.

Компиляция

По завершении написания программы (или ее фрагмента), ее можно откомпилировать и выполнить, выбрав Запуск -> Запуск из основного меню, или нажав зеленый треугольник (Запуск) на кнопочной панели. Все сообщения компилятора (предупреждения, промежуточные отчеты и сообщения об ошибках) будут появляться в окне сообщений, а в конечном итоге должно появиться сообщение

'Project "Project1" successfully built.:)'.

Запуск

Но где находится программа??!!

Если Вы ее еще не сохраняли, то IDE поместил ее во временную папку (т.е. /tmp под linux, C:\temp под windows, см. Настройки среды / Files / Directory, чтобы проверить настройки проектов).

Если проект был сохранен, то созданная программа находится в той же папке, где и файл project1.lpi.

Выполнять программу можно из окна консоли (терминала), применив cd для перехода в нужную папку, и напечатав имя программы (в Unix/Linux, в текущей папке нужно напечатать

./Project1 ,

если эта папка не находится в стандартном PATH). Однако довольно неудобно постоянно прыгать из редактора Lazarus в окно терминала и обратно. К счастью, имеется механизм, позволяющий открывать окно терминала из среды Lazarus.

Запуск из IDE

Из оснвного меню нужно выбрать Запуск -> Параметры запуска, затем пометить флажок "Использовать приложение для запуска". Сделав это, попробуйте запустить последовательность Компиляция/Запуск, но возможно, появится нехорошее сообщение

"xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".  

В этом случае необходимо изменить разрешения для соответствующего файла (например, chmod +x filename, или при помощи утилиты Windows, изменяющей разрешения); для этого необходимы права администратора. После этого при запуске программы появится окно консоли и тексты ввода/вывода в нем.

По завершении выполнения программы на экране появится сообщение "Press enter". Таким образом диалоги созданной программы останутся на экране, чтобы можно было их прочитать; по нажатии 'enter' окно консоли закроется.

Примеры

Можно испытать работу редактора Lasarus, попробовав все примеры из обычной книги по языку Pascal, или написав собственный. Наиболее полезные - те, что выполняют системные команды или запускают другие программы (написанные на Pascal, C или Perl, или сценарии оболочки).

Выполнение команд оболочки

Приведен пример для 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.

Пример: корректировка fpc и lazarus

Могут выполняться более сложные команды. Например, после посещения хранилища SVN с новейшими версиями FPC и Lazarus (см. buildfaq) можно иметь исходные версии FPC и Lazarus новейшими, путем взятия из хранилища SVN следующей последовательностью вызовов:

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.

Заметьте, что порядок команд

fpsystem ('cd /somedirectory')

сопровождаемая

fpsystem ('что-то делающей в этой папке')

не сработает, поскольку после каждого вызова функции fpsystem выполняемая программа возвращается в папку, из которой она запускалась; поэтому нужно в строку вызова оболочки ставить множество операторов.

Конечно, не стоит вводить каждую команду отдельной строкой Pascal; лучше создать сценарий наподобие приведенному ниже (из 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 

Его имя - updatelaz.sh, и он вызывается из программы Pascal так:

Program LazUpdate1;
uses classes, unix;
var S : longint; 
begin
  S := fpsystem ('updatelaz.sh')
end.

Примечание для пользователей Windows

Традиционно при написании консольных программ в Windows используется кодировка cp866. Если не принять специальных мер, то при написании консольной программы в IDE в консоли вместо русских букв будут выводиться кракозябры. Чтобы получился нормальный русский текст, в окне кода программы нужно нажать правую кнопку мыши и выбрать в контекстном меню "Параметры файла -> Кодировка -> CP866".

Параметры командной строки

См. Command line parameters and environment variables.