lazarus параметры запуска приложения
Запуск командной строки с параметрами (Лазраус)
Но к сожалению, она запускается без этих параметров. Подскажите пожалуйста, что я делаю не так и как это исправить.
Заранее благодарен!
Добавлено через 4 часа 34 минуты
Volvo аналогичный код выкладывал (Как из программы выполнять командные сценарии cmd.exe Windows (не через batch-файлы)?). Все работало, а у меня не работает.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Запуск с несколькими параметрами командной строки
У меня консольное приложение,в нём несколько параметров командной строки (case «1»,case «2» и.т.д.).
Запуск программы с параметрами с командной строки
Добрый день. Хочу решить простую задачу. Пользователь должен запустить программу с параметрами с.
Запуск графической программы с параметрами из командной строки
Пишу примитивный нотифер, нужно что бы через консоль можно было передавать текст в label и listbox.
lapvd, а в Process1.Executable что стоит? «cmd»?
Добавлено через 6 минут
Добавлено через 1 минуту
Лучше перечитайте тот пост полностью, там вроде все подробно описано
Добавлено через 4 минуты
Почему например,
работает, но совершенно не так, как надо. Кодировка не изменилась, пауза вылезла аж в заголовок?
Добавлено через 21 минуту
Сразу скажу, что с кодировкой chcp 1251 тоже самое.
Говорю же, перечитайте тему
Если лень все читать, прочитайте вот эту тему Русский текст в консоли пункт 2а
lapvd, при возникновении проблем вместо одного амперсанда & можно попробовать два &&, не знаю, отчего зависит их поведение, в официальной документации советуют ставить два, но на деле обычно работает только с одним
Забыл, всю строку @chcp 866&@cls&@echo on&Title Командная строка&@pause, по-моему, надо взять в двойные кавычки:
, то с кириллицей все будет нормально. В заголовке будет «Администратор: Командная строка» (chcp 1251), а в тексте будет уже chcp 866. Когда же я пытаюсь сделать тоже самое в Лазарусе, заголовок консоли выглядит так «Администратор: PльPsPjP. «.
Добавлено через 10 минут
В батнике вообще нет «/c» или «/K», а все работает.
Lazarus параметры запуска приложения
Освоить работу с консольными приложениями и с параметрами программы.
Консольные приложения
Создание консольного приложения
Обратите внимание, если нам нужно подключить к программе какие то модули, то делать это нужно до комментария
В этом случае мы ставим запятую после указанного модуля Classes и добавляем свои модули. Завершающая точка с запятой стоит после комментария, нам её ставить не нужно.
Свой код мы будем писать между скобками
WRITE и WRITELN
Процедура Write предназначена для вывода информации на экран. Она имеет следующий синтаксис :
Действует процедура следующим образом. В скобках мы можем указать какой-то текст, вывести содержимое переменных. Например:
После вывода информации на экран курсор остается на той же строчке, в позиции, где он оказался после вывода последнего символа.
Процедура Writeln действует точно также, но после вывода последнего символа курсор переходит на начало следующей строки.
Для ознакомления с процедурами создайте новый проект «Программа«. Модуль можно не переименовывать, просто сохраните его в папку 21-01. Полный текст модуля следующий:
READ и READLN
Процедура Read предназначена для ввода информации в программу, точнее, в переменные. Процедура работает следующим образом:
то в a и b попадут числа 1 и 23, после чего программа будет ожидать следующих данных, а число 456 потеряется.
Если указать read или readln без параметров, например, так:
Вернемся к нашей программе, и немного изменим код (между begin и end. ):
Параметры консольного приложения
ParamCount возвращает количество параметров, переданных в программу.
Как видите, в качестве параметров я указал два числа: 12 и 24. Программа не станет запрашивать у меня данные, а сразу выведет результат:
9Поэкспериментируйте с программой, вызывая с различным количеством параметров.
Как уже говорилось, функции ParamCount и ParamStr можно использовать в любой программе, не обязательно консольной.
Запуск чужой программы из своей
1. Аннотация
В этой статье рассказывается о том, как из своей собственной программы запускать другие программы и получать от них результат. Рассказано о специфике запуска из своей 32-ух битной программы системных утилит в Windows64.
2. Введение
На сегодняшний день в современном Паскале есть такое большое количество классов, процедур и функций, что казалось бы можно легко и быстро делать всё что угодно. Увы, увы, на деле часто оказывается, что не только нелегко, но и непросто. Однако зачастую есть готовые программы, которые прекрасно делают ту или иную подзадачу, которую нужно сделать и вашей программе. Можно, конечно, найти исходный код тех программ и потихому вставить его к себе, но не всегда это возможно. Во-первых, исходников может и не быть вовсе. Во-вторых, если исходники и есть, то переписывать их с языков C\D\Java или вообще какого-нибудь экзотического Common Lisp нет не только желания, но даже и возможности в силу специфики того или иного языка. Поэтому чтобы сильно не заморачиваться, нужно (желательно невидимо для глаз пользователя) запустить чужую программу, получить от неё ответ и уже в своей программе использовать этот ответ для собственных нужд. Здесь прекрасно подходят различные консольные программы, у которых есть входные параметры, а ответ они выдают в текстовом виде или, к примеру, картинку.
В своё время разработчики TurboPascal добавили процедуру «Exec()» для возможности запуска чего-либо прстороннего. Туда можно было передавать параметры, однако с ответом другой программы и вообще результатом её деятельности работать было неудобно. В Delphi ничего придумывать не стали, а просто советовали использовать функцию WinAPI ShellExecute(). С появлением Kylix дела стали печальны, т.к. WinAPI в UNIX не работает. Ну, хорошо, можно было бы использовать условную компиляцию и для одной ОС запускать одну функцию, а для другой другую. Однако и такой способ тоже привязывает возможность запуска к определённой ОС. Тем более, что сейчас вполне доступны не одна-две ОС, а чуть ли не десяток. FreePascal предлагает пару способов запуска чужой программы, которые вообще к ОС не привязаны. Конечно, где-то там глубоко внутри есть условная компиляция, но программиста она уже не касается и он над этим заморачиваться не должен.
На самом деле ООП-метод вовсе не является сложным, но если вы не очень большой фанатик ООП и привыкли только к функциям и процедурам, то запуск с помощью функций вам может больше понравиться.
3. ООП-метод запуска. TProcess
Название запускаемой программы нужно вводить в свойство «Executable» (см. рис.2) и никуда более, если вы не хотите при очередной смене версии компилятора получить неработающую программу.
Насильно прервать работу запущеной программы можно с помощью метода Terminate(КодОшибки).
Если программа запущена в режиме ожидания (т.е. с флагом poRunSuspended), запустить в работу её можно с помощью метода Resume(), а опять приостановить с помощью метода Suspend().
Давайте напишем простенькую программку, которая определяет, запущен ли в нашей системе какой-нибудь совершенно определённый процесс. Для усложнения программка будет универсальная, работающая как в Linux, так и в Windows.
На первый взгляд исходник выглядит черезвычайно устрашающим, но тут я не виноват, клянусь своей треуголкой. Если бы не Windows вообще и 64-ёх битная Windows в частности, то код выглядел бы в два раза проще. Как-то раз пытался я запустить из своей 32-ух битной прграммы консольную утилиту, которая сидит в каталоге SYSTEM32 и получил сообщение, что такая утилита не найдена. При этом из командного файла она же запускалась прекрасно. Интернет подсказал, что хитрый Win64 любит иногда из системного каталога SYSTEM32 перенаправлять в системный каталог SYSWOW64 и если такое случается, то перенаправление нужно отключить функцией «Wow64DisableWow64FsRedirection()», а потом немедленно вернуть перенаправление на место с помощью «Wow64RevertWow64FsRedirection()», пока не случилось чего-нибудь ужасного. Так что если у вас что-то не будет запускаться, то нужно расскоментировать магические заклинания, которые начинаются на «Wow64». Это не болезнь именно Паскаля, а особенность работы 32-ух битных приложений в 64-ёх битной Windows. Почитать можно здесь [1].
Следующий примерчик показывает помещение входных параметров запускаемой программы в отдельное свойство «Parameters».
Кстати говоря, если вы из вышепредставленного кода хотите сделать функцию, но не хотите передавать в неё параметры типа TStringList, то есть возможность организации параметров в виде одной строки. Допустим строка эта называется «params». Все входные параметры запускаемой программы нужно разбавлять символом перевода строки (#10), примерно так:
а потом засунуть эту строку в свойство «Parameters» таким образом:
TStringList прекрасно воспринимает символ #10 и строки параметров будут разделены правильно.
В модуле Process есть специальная процедура CommandToList(), которая переделывает подобную строку из всех параметров в TSringList. Однако пользоваться ею надо с умом. Разделение в ней происходит по символу пробела или любым символом перевода строки. Чтобы в одну строку были занесены параметры типа «ключ значение», которые разделены между собой пробелом, ключ и значение нужно группировать с помощью двойных кавычек:
4. Простые функции запуска
Эта и следующая функция являются надстройкой для класса TProcess, поэтому параметры Options для них полностью аналогичны этому же свойству TProcess.
Ещё более сокращённый вариант предыдущей функции. Все параметры аналогичны предыдущим.
Из специфики двух последних функций запуска стоит упомяноуть, что флаг «poUsePipes», который заведует принятием вывода отработавшей программы в специальный поток, здесь указывать не нужно, он уже стоит по умолчанию.
Для простого запуска, например браузера с адресом какого-нибудь сайта, вполне подойдёт простая функция из SysUtils:
Функции из модуля Process будут интересны в плане более гибкого управления запускаемой программы с помощью параметра Options или задания специального каталога для жизнедеятельности этой программы.
5. Выводы
Несмотря на то что, по сравнению с TurboPascal, запуск чужих программ усложнился, он стал более гибким и функционально законченым. Вдобавок, по сравнению с Delphi, не нужно принимать никаких хитрых мер, чтобы заполучить вывод чужой программы в свою. Это позволяет не ломать голову над собственным кодом и не лезть в дебри чужого API, чтобы получить у себя этот же функционал, который уже реализован в чужой программе.
Console Mode Pascal/ru
Contents
Программирование в консольном режиме Pascal
Многие из нас писали программы на Паскале задолго до того, как вошли в моду Графический интерфейс пользователя (GUI) и Интегрированные среды разработки (IDE). Многие другие являются новичками в программировании на Pascal, и им необходимо уметь опробовать основные инструменты языка. Третьим нужны консольные приложения или приложения текстового режима для выполнения сложных задач управления системой.
Программирование в консольном режиме без Lazarus
Хотя многие предпочитают использовать Lazarus IDE для написания программ в режиме консоли, вы также можете написать их с помощью любого текстового редактора и скомпилировать их самостоятельно, вызвав компилятор FPC, например так для программы в example.pas:
Также доступен текстовый режим IDE fp (немного похожий на старый Turbo Pascal).В следующих разделах мы сосредоточимся на программировании с помощью Lazarus.
Программирование в консольном режиме с помощью Lazarus
Lazarus предоставляет идеальную среду для изучения Паскаля и разработки программ в текстовом режиме. Можно использовать все функции интегрированной среды разработки, включая редактор исходного кода с ее подсветкой синтаксиса, доступом к библиотекам, сложными инструментамиы поиска и завершения кода, а также проверкой синтаксиса. Если вам не нужна Form с ее визуальными компонентами, можно и без нее, но редактор исходного кода Lazarus по-прежнему остается отличной средой для разработки программ. Вы можете компилировать и запускать свою программу во время разработки, не выходя из редактора.
Примечание: В Windows приложение с графическим интерфейсом пользователя не имеет консоли и, следовательно, не может выполнить writeln или readln. Вы получите ошибку File not open(Файл не открыт). Снимите галочку в разделе Project Options / Compiler Options / Linking / Target specific options / Win32 GUI application(Параметры проекта / Параметры компилятора / Связывание / Частные параметры цели / Приложение Win32 GUI), чтобы создать консольное приложение. Начиная с Lazarus IDE 1.4 она находится в разделе Project(menu) / Project Options / Compiler Options / Config and Target / Target specific options / Win32 GUI application(Проект (меню) / Параметры проекта / Параметры компилятора / Настройка и целевая платформа / Частные параметры цели / Приложение Win32 GUI).
Тип проекта: Console Application (Консольное приложение)
Выбор этого типа проекта в Lazarus создает программу с новым классом, производным от TCustomApplication. TCustomApplication предоставляет много всяких штучек и упрощает программирование утилит командной строки. Например, проверка параметров командной строки, написание справки, проверка переменных окружения и обработка исключений. Все программы LCL используют это автоматически.
Тип проекта: Program (Программа)
В качестве демо мы напишем очень минималистичную программу на Паскале. В среде IDE выберите тип проекта Program(Программа), и пусть среда IDE вам немного поможет. Например, когда вы добавляете еще один модуль, IDE автоматически добавит имя модуля в раздел программы uses. Это поведение определяется в параметрах проекта. Таким образом, вы можете переключаться между ‘Program'(Программой) и ‘Custom Program'(Пользовательской программой) в любое время.
Пример для начинающих:
Pascal scripts
Кроме того, можно писать сценарии, которые динамически компилируются с помощью InstantFPC, кроссплатформенного решения для запуска (небольших) программ Pascal в виде сценариев. Шебанг
позволяет запускать скрипт как отдельную программу.
Запуск программы
Компиляция
‘Project «Project1» successfully built. (Проект «Project1» успешно собран.) :).
Если вы еще не сохранили программу, то среда IDE поместит ее во «временный» каталог (например, /tmp в Linux, C:\temp в Windows, см. Environment Options / Files / Directory (Параметры среды / Файлы / Каталог) для собранных тестовых проектов).
Если вы уже сохранили проект, значит, программа была создана в том же каталоге, где вы сохранили файл project1.lpi.
Запуск в консоли
Пример для Linux/Unix, где программа хранится в /tmp:
Однако может быть очень неудобно продолжать переходить из редактора Lazarus в окно терминала и обратно. К счастью, есть механизм, позволяющий открывать окно терминала из среды Lazarus.
Запуск в IDE
Во внутренней консоли: показывается в окне вывода терминала.
При перенаправлении вывода.
‘xterm: Can’t execvp /usr/share/lazarus//tools/runwait.sh: Permission denied’.
Если это произошло, вам необходимо изменить права доступа к соответствующему файлу (например, с помощью chmod +x или с помощью утилиты Windows для изменения разрешений); возможно, вам придется сделать это как root. После этого каждый раз, когда вы будете запускать свою программу, будет появляться окно консоли, в котором будут отображаться все ваши текстовые операции ввода-вывода (readln, Writeln и т. Д.).
После того, как ваша программа завершит выполнение, на экране появится сообщение «Нажмите Enter». Таким образом, любой вывод, сгенерированный вашей программой, останется на экране до тех пор, пока вы не прочтете его; после того, как вы нажмете «Enter», окно консоли закроется.
К сожалению, этот метод не позволяет использовать встроенный отладчик.
Запуск в IDE с перенаправлением вывода
Если вы хотите увидеть, что написано в stdout, и также хотите использовать встроенный отладчик, stdout можно перенаправить в файл следующим кодом:
В качестве альтернативы, используя Lazarus 0.9.31 или выше (только в Linux): в меню «View»(Вид) в разделе «Debug Windows»(Отладка Windows) есть запись для «console output»(консольный вывод) для просмотра стандартного вывода.
Unicode (UTF8) вывод
Если вы хотите, чтобы ваша программа в режиме консоли отображала вывод Unicode (UTF8) в Windows Vista и более поздних версиях (а также, возможно, в более ранних версиях), вы можете использовать команду SetConsoleOutputCP для задания консоли набор символов UTF8.
Примечание: вам нужно будет убедиться, что шрифт консоли может отображать буквы, которые вы хотите вывести (например, греческий, кириллица, корейский).
Примечание: вам нужно будет включить модуль Windows.
См. Поддержка Unicode LCL для получения более подробной информации о поддержке Unicode в Lazarus и FPC.
Примеры
Выполнение команд оболочки
Пример: обновить FPC и Lazarus
Могут быть выполнены более сложные команды. Например, если вы уже проверили репозитории SVN для FPC и Lazarus (см. Buildfaq), вы можете поддерживать свои исходные файлы FPC и Lazarus в актуальном состоянии, извлекая их из репозитория SVN с помощью следующей последовательности вызовов :
Пример: корректировка fpc и lazarus
Могут выполняться более сложные команды. Например, после посещения хранилища SVN с новейшими версиями FPC и Lazarus (см. buildfaq) можно иметь исходные версии FPC и Lazarus новейшими, путем взятия из хранилища SVN следующей последовательностью вызовов:
Обратите внимание, что выдача команды
не работает, потому что после каждого вызова функции fpsystem() выполнение программы возвращается в каталог, в котором она была запущена; поэтому нам нужно включить несколько операторов в каждую строку в наши вызовы оболочки через fpsystem(). [Скорее так: он всегда начинается.]
Необязательно вводить каждую команду как отдельную строку Паскаля; можно создать файл сценария bash следующим образом (из buildfaq):
Назовите файл updatelaz.sh, а затем вызовите его из программы на Паскале для его непосредственного выполнения вместо использования bash следующим образом:
Примечание для пользователей Windows
Урок 1. Система программирования LAZARUS
Урок из серии «Программирование в среде Lazarus для школьников»
Среда программирования Lazarus в школьном курсе информатики используется сравнительно недавно.
Уроки предназначены для учащихся 10 классов и всех тех, кто хочет самостоятельно освоить Lazarus.
В этом уроке дается краткая справочная информация о среде программирования Lazarus, рассказывается об основных инструментах среды разработки программ, определяются основные этапы создания приложений.
В заключении вы можете посмотреть видеоурок, из которого узнаете о различиях проектов Lazarus и Delphi.
Скачать последнюю версию Lazarus вы можете по ссылке —//sourceforge.net/projects/lazarus/files/
Краткая справочная информация
Lazarus — среда быстрой разработки программного обеспечения для компилятора Free Pascal, аналогичная Delphi.
Данный проект базируется на оригинальной кроссплатформенной библиотеке визуальных компонентов Lazarus Component Library (LCL).
Кроссплатформенное программное обеспечение — это программное обеспечение, работающее более чем на одной аппаратной платформе и/или операционной системе.
Free Pascal — это компилятор языков Pascal и Object Pascal, работающий под Windows, Linux, Mac OS X, FreeBSD, и другими ОС.
Таким образом, разработанные приложения могут функционировать практически под любой операционной системой.
Все, что вы видите на экране во время работы различных приложений, все элементы (кнопки, бегунки, меню и т.п.) можно реализовать в Lazarus.
В Lazarus используется технология визуального программирования. Пользователь для создания графического интерфейса приложения использует готовые компоненты, значки которых находятся на панели компонентов. После того как он помещает компонент на форме, программный код для него генерируется автоматически. Вручную остается запрограммировать только те действия, которые будет выполнять это приложение.
Процесс создания приложения можно разделить на следующие этапы:
1. Создание проекта. В результате на экране появляется пустая форма (окно будущего приложения).
2. Создание графического интерфейса проекта — расположение необходимых элементов, задание размеров, изменение свойств;
3. Написание программного кода, который определит, что будет делать ваша программа.
4. Отладка программы.
Чтобы познакомится с основными инструментами среды разработки, запустим среду программирования.
Для этого выполните команду:
Пуск => Все программы => Lazarus => Lazarus.
При этом запускается оболочка создания приложений, называемая интегрированной средой разработки IDE (Integrated Development Environment). На экране появиться набор окон.
Вы видите все основные инструменты среды разработки Lazarus:
1. Окно формы — окно будущего приложения.
2. Главное окно, содержащее три панели: меню, панель инструментов, палитру компанентов. Палитру компанентов вы будете использовать для выбора необходимых вам для создания пользовательского интерфейса помпонент.
3. Окно Инспектор объектов, содержащее файлы проекта и окно со вкладкой Свойства, в котором вы будете настраивать свойсктва помещенных на форму объектов.
4. Окно Редактор исходного кода, в котором вы будете писать программный код.
Дадим появившимся окнам краткую характеристику.
Главное окно. Здесь располагаются меню, панель инструментов и палитра компонентов.
На Палитре компонентов, представляющей собой множество тематических вкладок, располагаются визуальные и невизуальные компоненты для вашей будущей программы.
Невизуальные компоненты видны только на первом этапе создания приложения — при редактировании.
Главное окно остается открытым все время работы IDE. Закрывая его, вы, тем самым, закрываете Lazarus и все открытые в нем окна.
Инспектор объектов содержит четыре страницы
На первой странице «Свойства» постоянно отображаются все доступные свойства выбранного компонента. В левой колонке содержится список всех свойств выделенного в данный момент компонента, в правой — значения свойств.
Значения свойств можно менять еще до запуска проектируемой программы. Например, для будущего окна вашего приложения (формы) свойство Name имеет значение Form1. Для изменения имени достаточно изменить его в Инспекторе объектов.
На второй странице «События» находятся возможные обработчики событий для выбранного компонента. В левой колонке расположены названия события, в правой — соответствующие процедуры.
Окно Редактора кода. На момент первого запуска оно имеет заголовок Unit1.
В окне Редактор исходного кода вы будите писать программный код программы, и само окно очень похоже на обычный текстовый редактор. Для удобства при редактировании текста программы строки пронумерованы, предусмотрено выделение цветами:
Текст программы разбивается на части — процедуры и функции.
Основную работу программист производит именно здесь.
Проектировщик форм. У каждого Windows-приложения должно быть хотя бы одно окно.
Lazarus при первом запуске автоматически предлагает пользователю новый проект, открывая пустую форму под названием Form1, и назначает его главным окном.
Перенося на него элементы из палитры компонентов, вы тем самым, предварительно оформляете его.
Главное окно в проекте может быть только одно. Все другие создаваемые окна будут дочерними. Закрывая главное окно стандартной кнопкой закрытия окна, или программно, вы закрываете и все дочерние окна.
В этом уроке мы познакомились с основными инструментами разработки программ. В следующем уроке мы напишем свою первую программу.
Задание для самостоятельного выполнения
1. Скачать и установить на своем домашнем компьютере среду программирования Lazarus по указанной в начале урока ссылке.
2. Посмотреть видеоурок: «Lazarus. Ввод в курс дела», из которого вы узнаете о различиях проектов Lazarus и Delphi.