Как запустить программу паскаль в командной строке

Я пытаюсь использовать некоторые инструменты командной строки Windows из короткой программы Pascal. Чтобы было проще, я пишу функцию DoShell, которая берет строку командной строки в качестве аргумента и возвращает тип записи, называемый ShellResult, с одним полем для кода завершения процесса и одним полем для выходного текста процесса.
У меня серьезные проблемы с некоторыми стандартными библиотечными функциями, которые не работают должным образом. Функция DOS Exec() фактически не выполняет команду, которую я передаю ей. Процедура Reset() дает мне ошибку выполнения RunError (2), если я не установил режим компилятора . В этом случае я не получаю ошибки во время выполнения, но функции Readln(), которые я использую в этом файле, на самом деле ничего не читают, а кроме того, функции Writeln(), используемые после этой точки в выполнении кода, тоже ничего не делают.
Вот исходный код моей программы. Я использую Lazarus 0.9.28.2 beta, с Free Pascal Compiler 2.24

program project1;

Установка Turbo Pascal на ОС Win7 64-bit. Основы программирования. Паскаль. Урок №1.

uses
Classes, SysUtils, StrUtils, Dos
< you can add units after this >;

type
ShellResult = record
output : AnsiString;
exitcode : Integer;
end;

function DoShell(command: AnsiString): ShellResult;
var
exitcode: Integer;
output: AnsiString;
exepath: AnsiString;
exeargs: AnsiString;
splitat: Integer;
F: Text;
readbuffer: AnsiString;
begin
//Initialize variables
exitcode := 0;
output := »;
exepath := »;
exeargs := »;
splitat := 0;
readbuffer := »;
Result.exitcode := 0;
Result.output := »;

Читайте также:
Какие программы должен знать секретарь

//Split command for processing
splitat := NPos(‘ ‘, command, 1);
exepath := Copy(command, 1, Pred(splitat));
exeargs := Copy(command, Succ(splitat), Length(command));

//Run command and put output in temporary file
Exec(FExpand(exepath), exeargs + ‘ >__output’);
exitcode := DosExitCode();

//Get output from file
Assign(F, ‘__output’);
Reset(F);
Repeat
Readln(F, readbuffer);
output := output + readbuffer;
readbuffer := »;
Until Eof(F);

//Set Result
Result.exitcode := exitcode;
Result.output := output;

end;

var
I : AnsiString;
R : ShellResult;
begin
Writeln(‘Enter a command line to run.’);
Readln(I);
R := DoShell(I);
Writeln(‘Command Exit Code:’);
Writeln(R.exitcode);
Writeln(‘Command Output:’);
Writeln(R.output);
end.

спросил(а) 2010-05-04T03:36:00+04:00 13 лет, 2 месяца назад

Источник: progi.pro

Как запустить программу паскаль в командной строке

Процедура Readln используется не только для задержки экрана. Ее основная задача — ввод данных с клавиатуры. В этой статье мы научимся вводить числа с клавиатуры, и потом выводить их на экран. Для этого нам будет необходимо познакомиться с разделом .

#8. Компиляция и запуск java программы с командной строки

Div, Mod, сложение, вычитание в Pascal.

Помимо операций умножения и сложения, над целочисленными переменными производятся операции Div (операция целочисленного деления), Mod (вычисление остатка от целочисленного деления), операция вычитания «-».

Abs, Sqr в Pascal.

Abs — функция языка Паскаль, которая вычисляет модуль числа.
Sqr — функция языка Паcкаль, которая возводит число в квадрат.

Циклы и массивы

Массивы. Регулярные типы.

В простых типах данных каждое данное имеет свое название (идентификатор). В этом разделе вводится структурная взаимосвязь между данными, хранимыми в оперативной памяти путем организации массива, .

Подпрограммы, определенные пользователем.

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

Командная строка.

Команда смены текущего каталога CD.

Windows» Категория: Командная строка.

После запуска приглашение командной строки показывает текущий каталог. По умолчанию, это каталог профиля текущего пользователя. Для смены текущего каталога используется специальная команда CD.

Читайте также:
Программа определения расстояния между точками

Запуск командной строки.

Windows» Категория: Командная строка.

Запустить командную строку можно несколькими способами:

  • Пуск – Все команды – Стандартные – Командная строка.
  • Пуск – Выполнить – Вводим cmd.exe – Нажимаем Ok.
  • Заходим в папку C:WINDOWSsystem32 и запускаем cmd.exe.

Синтаксис команд командной строки. Файловая структура. Групповые символы.

Windows» Категория: Командная строка.

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

Перенаправление ввода-вывода и конвейеризация.

Windows» Категория: Командная строка.

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

Команда MKDIR и RMDIR для создания и удаления каталога.

Windows» Категория: Командная строка.

Команда MKDIR используется для создания каталога или подкаталога. Команда имеет следующий синтаксис: MKDIR[диск:]путь. Как видно из синтаксиса команда, параметр «путь» является обязательным. Данный параметр определяет название создаваемого каталога.

Команда ATTRIB для изменения атрибутов файла.

Windows» Категория: Командная строка.

Команда ATTRIB используется для изменения атрибутов одного или нескольких файлов. Для того чтобы посмотреть атрибуты того или иного файла, необходимо щелкнуть по нему правой кнопкой мыши и выбрать пункт свойства. Для примера, создадим на диске «С» текстовый файл «atribut.txt». Щелкнем правой кнопкой мыши по этому файлу и в контекстном меню выберем пункт «Свойства».

Команда COPY для копирования одного или нескольких файлов.

Windows» Категория: Командная строка.

Команда COPY при работе в командной строке позволяет копировать один или несколько файлов. Команда имеет синтаксис: COPY[/D][/V][/N][/Y | /-Y][/Z][/L][/A | /B]источник[/A | /B][+ источник[/A | /B] [+ . ]][результат [/A | /B]]. Источником является имя копируемого файла, а результатом является каталог, в который будет помещена копия этого файла и/или имя создаваемого файла.

Читайте также:
Программа очистки оперативной памяти руководство программиста лист утверждения

Команда XCOPY.

Windows» Категория: Командная строка.

В прошлом уроке мы рассмотрели команду COPY, предназначенную для копирования одного или нескольких файлов. Эта команда имеет ряд недостатков. Например, с ее помощью нельзя скопировать системные и скрытые файлы. Команда COPY копирует файлы, но не может копировать каталоги. Для подобных целей была придумана команда XCOPY, которая выполняет те же функции, что и команда COPY, и имеет ряд дополнительных функций.

Команда XCOPY (продолжение).

Windows» Категория: Командная строка.

Команда XCOPY может создавать каталог назначения для копируемых файлов.

Источник: mojainformatika.ru

Как запустить командную строку из программы на паскале?

Мне нужно открыть файл (в частности, музыкальные файлы) с помощью программы по умолчанию для этого типа файлов из программы на паскале. Пока что я думаю, что лучший способ сделать это — использовать командную строку для запуска команды:

open C:/Users/defaultuser0/Music/filename.wav

Но я не уверен, как сказать cmd сделать что-то из Паскаля.

Erin Garoni 27 Апр 2017 в 04:44

3 ответа

Лучший ответ

Предполагая, что вы используете Windows, вам нужно использовать процедуру ShellExecute (и включить модуль шеллапи). Команда, вероятно, будет

ShellExecute (application.handle, ‘open’, ‘C:/Users/defaultuser0/Music/filename.wav’, nil, nil, SW_MAXIMIZE)

Но вам, возможно, придется немного повозиться с этим. Прочитайте документацию процедуры системы.

No’am Newman 27 Апр 2017 в 05:12

В Lazarus есть вызов OpenDocument, который абстрагирует эту функциональность. В Windows он перенаправляется к функции ShellExecuteW, а в * nix пытается передать ее соответствующей открытой программе на рабочем столе (например, «Открыть / запустить в Windows»).

Реализация также является подключаемой, поэтому, если вы хотите открыть определенный документ по-другому (например, PDF-файлы непосредственно в Adobe вместо браузера), вы можете написать перехват.

Marco van de Voort 28 Апр 2017 в 11:24

Этот код может помочь вам:

swapvectors; exec(‘cmd’,’/c open «C:/Users/defaultuser0/Music/filename.wav»‘); swapvectors;

Вы должны использовать модуль DOS, чтобы использовать этот код:

uses dos. ;

(Извините за мой английский)

Источник: question-it.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru