delphi консольное приложение с параметрами

Delphi консольное приложение с параметрами

(если можно ссылки или готовые решения)
Спасибо

topdown
Сергей М. © ( 2007-01-23 10:57 ) [1]

Точно так же как и не консольное

Функции ParamCount() и ParamStr() работают одинаково в любых приложениях любых типов.

1. написать консольное приложение
2. написать в нем обработку полученных параметров
:)
ParamStr() вам в руки, там все очень просто :)

topdown
daser ( 2007-01-23 11:08 ) [3]

>novill © (23.01.07 10:59) [2]
более проблемка с написанием консольного приложения. С чего начать?

Вообще написание консольного приложения начинается с изучения книжки,

а само оно начинается например так
File->New->Other. и там в окошке выбираешь Console application

> (если можно ссылки или готовые решения)

Вот тебе готовое решение )))

<$APPTYPE CONSOLE>
uses
SysUtils;
begin
if ParamCount>0 then Writeln(«Program «+ParamStr(0)+» called with parameter «+ParamStr(1));
Readln;
end.

Вообще вопрос противоречивый. Наверно поэтому и ответы не те, которые ожидаются автором.
Приложение с передачей ему параметров ВЫЗЫВАЮТ (из другого приложения, например). А ПИШУТ консольные приложения с чтением параметров командной строки. Вот на эту тему ответы и идут.

> Наверно поэтому и ответы не те, которые ожидаются автором.

Это он вам сам сказал? )

topdown
daser ( 2007-01-23 11:57 ) [9]

> Приложение должно запустится
Само? Или как-то иначе?

topdown
TRUNK © ( 2007-01-23 12:22 ) [11]

topdown
Desdechado © ( 2007-01-23 12:27 ) [12]

TRUNK © (23.01.07 12:22) [11]
Зато способ передачи параметров очень меняется.
Может, автору нужно именно передать параметры и запустить из своей программы эту консольную.

topdown
daser ( 2007-01-23 12:48 ) [13]

>Desdechado © (23.01.07 12:16) [10]
из батника

topdown
Desdechado © ( 2007-01-23 12:59 ) [14]

Источник

Использование параметров в программе на Delphi

Использование параметров в программе на Delphi

1. Добавление в программу обращения к параметрам

Для проверки правильности программы разрабатываются тестовые примеры (тесты), и в процессе поиска и исправления ошибок необходимо проверять программу на всех тестах после каждого изменения программного кода до тех пор, пока не будет достигнут ожидаемый результат для всех тестовых примеров. При этом удобно исходные данные для всех тестов хранить в файлах на диске: один тест – один текстовый файл. Чтобы не менять программный код, меняя названия файлов для каждого теста можно использовать возможность передачи параметров программе при ее запуске. Результаты запуска для каждого теста также удобно хранить в отдельных файлах.

Пусть программа тестируется на двух тестах.

Пусть имя входного файла – 1-й параметр, имя выходного файла – 2-й параметр.

Пусть prog. dpr – файл с программным кодом головного модуля проекта,

prog_dat1.txt – файл входных данных для первого теста,

prog_dat2.txt – файл входных данных для второго теста,

prog_res1.txt – файл выходных данных для первого теста,

prog_res2.txt – файл выходных данных для второго теста.

Создать текстовые файлы с исходными данными можно в Блокноте или в среде Delphi (меню FileàNewàOtheràOther_FilesàText). Файлы с результатами создадутся автоматически при открытии с помощью ReWrite, либо надо создать их самим при открытии для дозаписи с помощью Append. Просмотреть результаты можно опять же с помощью простейшего текстового редактора «Блокнот» или прямо из среды разработки Delphi (Ролик №5)).

Изменения, которые надо произвести в тексте программы – минимальны: конкретные имена файлов заменяются на обращения к функции ParamStr:

ParamStr – стандартная функция для работы с параметрами в Delphi, она возвращает параметр с заданным номером. Ее синтаксис:

Все параметры трактуются как отдельные строки (string). Параметры пользователя нумеруются, начиная с единицы. В нулевом параметре ParamStr(0) ОС передает программе полное имя запускаемого приложения (например, D:\Гречкина\Project1.exe). Этот (нулевой) параметр не входит в общее число параметров, которое можно узнать с помощью функции ParamCount:

2. Запуск программы с параметрами

Запускать программу можно в отладочном режиме в среде разработке Delphi, но готовая программа все же представляет собой исполняемый exe-файл, который можно запускать вне среды разработки. Для запуска программ в среде Windows принято использовать ярлыки, вынесенные на Рабочий стол или в меню Пуск.

а) Для запуска в среде Delphi перед запуском программы надо указать через пробел параметры в секции Parameters (меню RunàParameters) (см. Рис.). Затем запустить программу как обычно: меню RunàRun или F9.

image001 66image002 35

Рис. Указание параметров в среде Delphi

б) Вне среды разработки Delphi (в операционной среде Microsoft Windows) можно запустить готовую программу – exe-файл. Для этого надо создать для него ярлыки для каждого из тестов, указав в них нужные параметры после имени программы, и запускать с помощью этих ярлыков.

Для создания такого ярлыка в папке проекта:

1) Откройте папку со своим проектом и выполните один щелчок правой кнопкой мыши на значке исполняемого файла вашего проекта (он создается после компиляции (меню ProjectàCompile или Ctrl+F9) или запуска (меню RunàRun или F9) вашего проекта в среде Delphi.

2) После щелчка появится контекстное меню, в котором следует выбрать пункт «Создать ярлык». Должен появиться ярлык для выбранного файла (см. Рис.).

image003 29

3) Теперь надо изменить свойства этого ярлыка:

– выполните один щелчок правой кнопкой мыши на значке ярлыка;

– в появившемся контекстном меню выберите последний пункт «Свойства»;

– в строке Объект (см. Рис.) добавьте два параметра (имена входного и выходного файлов через пробел) и нажмите кнопку «OK». Например,

Если файлы находятся в Рабочей папке проекта, полный путь к ним указывать не обязательно, достаточно указать только имена:

D:\Гречкина\Project1.exe task440_dat1.txt task440_res1.txt

4) Для каждого теста надо создать свой ярлык и назвать их (ярлыки) можно соответственно Тест1, Тест2 и т. д.

image004 22image005 17

Рис. Свойства ярлыка

При запуске (двойной щелчок на ярлыке) параметры передаются в программу. Смысл параметров и способ их обработки в программе определяется программистом.

К сожалению, в ярлыках используется полный путь к файлу, и при копировании папки проекта в другое место на диске старый путь становится неактуальным. Поэтому можно для запуска программ с параметрами использовать ещё и bat-файлы. Чтобы создать bat-файл можно воспользоваться Блокнотом, создав обычный текстовый файл с командной строкой(ами) внутри и сохранив его с расширением bat. Например, для рассмотренного примера в папке проекта можно создать bat-файл со следующими строками:

Project1.exe task440_dat1.txt task440_res1.txt

Project1.exe task440_dat2.txt task440_res2.txt

Поскольку пути указаны относительные, то при смене места расположения папки проекта, обе команды запуска останутся актуальными.

Источник

Delphi консольное приложение с параметрами

codeman

Простое консольное приложение на Delphi

“Дайте мне консоль и я переверну Землю”

other

После нажатия OK система создаст готовое консольное приложение, которое, однако, ничего не делает. Вы можете увидеть примерно такой текст:

Можно заметить, что директива APPTYPE с параметром CONSOLE устанавливает тип приложения как консольное. Это означает, что при запуске программы будет создана консоль и приложение получит стандартные дескрипторы ввода (stdin), вывода (stdout) и ошибки (stderr). В Delphi эти переменные называются Input, Output и ErrOutput соответственно и имеют тип TextFile. Если программа была запущена другим приложением, у которого есть своя консоль, но наша программа примет дескрипторы своего родителя и будет работать с его консолью.

Для вывода какой-либо информации используются процедуры Write и WriteLn. Последняя отличается от первой тем, что после вывода информации переходит в начало следующей строки.

Теперь выведем надпись «Hello, World!»:

Запустив программу клавишей F9 мы на мгновение увидим консоль, однако, она сразу же исчезнет. Программы выполнит вывод в консоль и завершит работу, а с ней и исчезнет консоль. Посмотреть результат выполнения программы можно из консоли Windows, которая запускается командой cmd в окне Выполнить из меню П у с к :

D:\Delphi2006\Projects>Project2.exe
Hello, World!

Теперь попробуем что-нибудь ввести с клавиатуры. Пусть это будет некое число, которое мы тут же выведем. Для ввода данных используется процедуры Read и ReadLn. Последняя отличается от первой тем, что после ввода своих данных переносит текущую позицию на начало следующей строки. Данные для разных переменных необходимо разделять строкой или пробелом. Строковые данные вводятся до конца текущей строки файла (консоли).

Все параметры аналогичны процедурам ввода. Если параметр F не указан, то используется стандартная переменная для ввода Input.

Процедура ReadLn, вызванная без параметров, задержит выполнение программы до нажатия клавиши Enter. Таким образом консоль не будет исчезать после запуска программы.

Таким образом можно создавать простые приложения, которые будут использовать для ввода и вывода консоль. Вот пример приложения, которое выводит таблицу значений синуса угла:

var
X, dX, A: double;
N, i: integer;

begin
Write( ‘X = ‘ ); ReadLn(X);
Write( ‘dX = ‘ ); ReadLn(dX);
Write( ‘N = ‘ ); ReadLn(N);

X = 90
dX = 10
N = 18

Источник

Консольные приложения в XXI веке. Часть 2: работа с консольными приложениями в Delphi

В прошлой статье, посвященной консольным приложениям, я рассматривал случаи, когда работа с консольными приложениями не только необходима, но и неизбежна. Это случай работы с математическими моделями, которые разрабатываются математиками на Фортране. Нет, конечно, для любой задачи может быть, как минимум, два решения. Например, можно открыть исходник реализации модели и заново его переписать на Delphi. Но зачем? Можно просто научиться взаимодействовать с готовых консольным приложением и решить задачу намного проще. И именно этим мы сегодня и займемся – работой с консольными приложениями в Delphi, а именно – научимся работать с потоком ввода/вывода.

Когда под “взаимодействием” с консольным приложением подразумевается обычный его (консольного приложения) запуск, то, на мой взгляд, такой вопрос можно решить одним простеньким запросом в Гугл и посмотреть, например, как работать с ShellExecute или CreateProcess.

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

Тема, в принципе, столь же стара, как и Delphi, а то и ещё старее, поэтому я не буду долго копаться в теории, расписывать процесс взаимодействия по шагам и так далее (всё это прекрасно изучено и рассказано), а перейду сразу к рассмотрению готового решения для Delphi.

Russell Libby

Russel Libby – это набор из трех компонентов: TPipeClient, TPipeServer и TPipeConsole. С некоторыми доработками эти компоненты можно сказать здесь или моей страницы “Исходники”. Компоненты появились в, теперь уже, далеком 2003 году, однако на сегодняшний день сайт разработчика не доступен, а разработку в своё время продолжал Francois Piette. Компоненты очень хорошие, просты в работе и имеют минимум свойств, поэтому, разобраться с ними достаточно просто и легко.

После установки в палитре компонентов Delphi появится новая вкладка с тремя перечисленными выше компонентами:

RussellLibby

Сегодня я буду рассматривать компонент TPipeConsole.

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

Прежде, чем приступать к взаимодействию со сложными консольными приложениями, напишем простенькое самостоятельно. Я не стал долго мудрить и написал консольное приложение, которое выводит таблицу умножения для любого числа в диапазоне от 0 до 9:

Если пользователь вводит неверное число, например, 0 или 10, приложение сообщит об этом и завершит работу с кодом ошибки 1. Наша задача состоит в том, чтобы из VCL-приложения запустить консольное, ввести число и прочитать результат работы консольного приложения, включая и возможную ошибку ввода.

VCL Application

Тестовое VCL-приложение выглядит следующим образом:

PipeTestVCL

На форме расположены:

Использование TPipeConsole

Договоримся, что exe-файл консольного приложения будет располагаться в той же директории, что и exe-файл vcl-приложения.

Первое, что мы сделаем – это запустим консольное приложение и прочитаем поток ввода/вывода. Запустить консольное приложение можно следующим образом:

Источник

Передача параметров из командной строки

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Передача параметров из командной строки в процедуру Delphi
Интересует, собственно, вопрос, как сделать такую штуку. При старте программы вызывается командная.

tickПередача параметров командной строке с выбором места сохранения
Добрый вечер/день/ночь, жителям форума. Сталкнулся с такой проблемой. Есть форма.

Передача параметров
День добрый! Подскажите как из формы авторизации передать в главную форму выбранного пользователя.

вместо D:\Semafor\bin\LightsClient.exe поставлю ModeFileName из строки 48, то нужное для запуска приложение LightsClient не запускается. а если оставляю жестко прописанный путь то все работает на УРА. Просто суть в том, что сами ехе-шники могут храниться где угодно, просто они должны быть в одной директории, так что прописывать путь не имеет никакого смысла((
В чем тут может быть дело?

Добавлено через 14 часов 4 минуты
Mawrat, спасибо большое за помощь! Спасибо, что откликнулся! smile3

если готовое приложение запускать от администратора на рабочей станции, то такое диалоговое окно выводится с нормальным русским шрифтом. но если запускать от пользователя, то идет сплошная абракадабра. Понятно, что дело в кодировке, просто у пользователя политиками безопасности отключена возможность менять язык системы через панель управления.
У меня получается только 2 варианта исполнения данного диалога:
1. Сделать его через отдельную форму с кнопками ДА-НЕТ и выводом информации через Label.
2. Каким-то образом сделать вывод этого диалога универсальным для любой кодировки. (но как это сделать- ума не приложу)

Может кто-то что-нибудь посоветует? Может кто сталкивался?

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • delphi как скрыть главную форму
  • delphi как связать две формы