Difference between revisions of "Console Mode Pascal/ru"
(→Запуск) |
|||
Line 62: | Line 62: | ||
Если вы уже сохранили проект, значит, программа была создана в том же каталоге, где вы сохранили файл project1.lpi. | Если вы уже сохранили проект, значит, программа была создана в том же каталоге, где вы сохранили файл project1.lpi. | ||
− | == Запуск == | + | ==== Запуск в консоли ==== |
+ | Вы можете запустить программу, перейдя в окно консоли (терминала), затем с помощью '''cd''' перейдя в каталог и введя имя программы. В Unix/Linux, если она находится в текущем каталоге, вам придется начать с <code>./</code>, поскольку программа, вероятно, не будет найдена в PATH. | ||
− | + | Пример для Linux/Unix, где программа хранится в /tmp: | |
− | + | <syntaxhighlight lang="bash"> | |
− | + | cd /tmp | |
− | + | ./Project1 | |
− | + | </syntaxhighlight> | |
− | + | Однако может быть очень неудобно продолжать переходить из редактора Lazarus в окно терминала и обратно. К счастью, есть механизм, позволяющий открывать окно терминала из среды Lazarus. | |
− | |||
− | |||
− | |||
− | |||
− | |||
== Запуск из IDE == | == Запуск из IDE == |
Revision as of 23:39, 21 June 2021
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
magyar (hu) │
日本語 (ja) │
русский (ru) │
slovenčina (sk) │
Программирование в консольном режиме Pascal
Многие из нас писали программы на Паскале задолго до того, как вошли в моду Графический интерфейс пользователя (GUI) и Интегрированные среды разработки (IDE). Многие другие являются новичками в программировании на Pascal, и им необходимо уметь опробовать основные инструменты языка. Третьим нужны консольные приложения или приложения текстового режима для выполнения сложных задач управления системой.
Программирование в консольном режиме без Lazarus
Хотя многие предпочитают использовать Lazarus IDE для написания программ в режиме консоли, вы также можете написать их с помощью любого текстового редактора и скомпилировать их самостоятельно, вызвав компилятор FPC, например так для программы в example.pas:
fpc example.pas
Также доступен текстовый режим IDE fp (немного похожий на старый Turbo Pascal).В следующих разделах мы сосредоточимся на программировании с помощью Lazarus.
Программирование в консольном режиме с помощью Lazarus
Lazarus предоставляет идеальную среду для изучения Паскаля и разработки программ в текстовом режиме. Можно использовать все функции интегрированной среды разработки, включая редактор исходного кода с ее подсветкой синтаксиса, доступом к библиотекам, сложными инструментамиы поиска и завершения кода, а также проверкой синтаксиса. Если вам не нужна Form с ее визуальными компонентами, можно и без нее, но редактор исходного кода Lazarus по-прежнему остается отличной средой для разработки программ. Вы можете компилировать и запускать свою программу во время разработки, не выходя из редактора.
Чтобы запустить программу в режиме консоли, перейдите в главное меню и выберите Project -> New Project(Проект - новый проект), а затем выберите Program(Программа) или Console Application(Консольное приложение). Среда IDE не будет генерировать все дополнительные файлы, связанные с полным графическим приложением, и не откроет окно инспектора объектов, но откроет редактор исходного кода со структурой скелетной программы и будет ожидать ввода вашего программирования.
Тип проекта: Console Application (Консольное приложение)
Выбор этого типа проекта в Lazarus создает программу с новым классом, производным от TCustomApplication. TCustomApplication предоставляет много всяких штучек и упрощает программирование утилит командной строки. Например, проверка параметров командной строки, написание справки, проверка переменных окружения и обработка исключений. Все программы LCL используют это автоматически.
Тип проекта: Program (Программа)
В качестве демо мы напишем очень минималистичную программу на Паскале. В среде IDE выберите тип проекта Program(Программа), и пусть среда IDE вам немного поможет. Например, когда вы добавляете еще один модуль, IDE автоматически добавит имя модуля в раздел программы uses. Это поведение определяется в параметрах проекта. Таким образом, вы можете переключаться между 'Program'(Программой) и 'Custom Program'(Пользовательской программой) в любое время.
Пример для начинающих:
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes;
begin
WriteLn('Hello World!');
ReadLn;
end.
Pascal scripts
Кроме того, можно писать сценарии, которые динамически компилируются с помощью InstantFPC, кроссплатформенного решения для запуска (небольших) программ Pascal в виде сценариев. Шебанг
#!/usr/bin/env instantfpc
позволяет запускать скрипт как отдельную программу.
Запуск программы
Компиляция
Когда вы закончите свою программу (или фрагмент программы), вы можете скомпилировать и запустить ее, выбрав Run -> Build(Выполнить -> Сборка)(или Quick Compile(Быстрая компиляция)) в главном меню или щелкнув значок зеленого треугольника («Выполнить») на панели кнопок. Любые сообщения компилятора (предупреждения, отчеты о ходе выполнения или сообщения об ошибках) появятся в окне сообщения, и, надеюсь, в конечном итоге будет сообщение, которое скажет
'Project "Project1" successfully built. (Проект "Project1" успешно собран.) :).
А где программа-то ?? !!
Если вы еще не сохранили программу, то среда IDE поместит ее во «временный» каталог (например, /tmp в Linux, C:\temp в Windows, см. Environment Options / Files / Directory (Параметры среды / Файлы / Каталог) для собранных тестовых проектов).
Если вы уже сохранили проект, значит, программа была создана в том же каталоге, где вы сохранили файл project1.lpi.
Запуск в консоли
Вы можете запустить программу, перейдя в окно консоли (терминала), затем с помощью cd перейдя в каталог и введя имя программы. В Unix/Linux, если она находится в текущем каталоге, вам придется начать с ./
, поскольку программа, вероятно, не будет найдена в PATH.
Пример для Linux/Unix, где программа хранится в /tmp:
cd /tmp
./Project1
Однако может быть очень неудобно продолжать переходить из редактора 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".