Перейти к содержанию
  • Регистрация
  • 0
Авторизация  
shershen

[OSX] Как прочитать вывод другого консольного приложения из своего?

Вопрос

Как на FM запустить консольную программу (на Макосе) и считать ее экран (проценты в моем случае)? Про пайпы в курсе, но что-то не знаю даже, с чего начать на FM :( 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Я думаю, "коем" образом вполне себе касается. Я использую Firemonkey и хочу с его помощью решить конкретную задачу под Mac Os X. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Думаю как-то так:

 

В Delphi XE6:

File -> New -> Other... -> Console Application

 

в коде к примеру:

program Project3;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

begin
  
  writeln('Hello World!'); // вывод на экран Hello World
  readln; // ввод, чтобы окно не закрылось пока enter не нажмут

end.

далее справа в Project Manager'е правой кнопкой мыши по Target Platforms -> Add Platform... -> OS X

 

при компиляции выбираем OS X, и наверное имеем связь с Mac'ом как и при компиляции для iOS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Думаю вопрос был не об этом. Нужно читать вывод с "чужих" консольных приложений, например ping.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Да, возьмем для примера какой-нибудь конвертер форматов, мы его запускаем (типа CreateProcess с Pipes на винде) и пока идет преобразование, мы показываем красивый progress bar на форме, считывая % из консольного окна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Спасибо, процесс запускается, файл конвертится (я юзаю Lame), но никакого текста консоли не получаю - 

BytesRead := fread(Buffer, 1, BufferSize, Output);

всегда возвращает 0...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 

решение вполне рабочее, проверено.

На Lame проверьте, пожалуйста. attachicon.giflame.zip

 

Проверить смогу только в понедельник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вот результат работы вашей программы

Last login: Fri Oct 17 17:25:25 on ttys001
xxx:~ User$ /Users/User/Desktop/lame ; exit;
LAME 64bits version 3.99.5 (http://lame.sf.net)

usage: /Users/User/Desktop/lame [options] <infile> [outfile]

    <infile> and/or <outfile> can be "-", which means stdin/stdout.

Try:
     "/Users/User/Desktop/lame --help"           for general usage information
 or:
     "/Users/User/Desktop/lame --preset help"    for information on suggested predefined settings
 or:
     "/Users/User/Desktop/lame --longhelp"
  or "/Users/User/Desktop/lame -?"              for a complete options list

logout

[Процесс завершен]

Это то, что вы ожидали увидеть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Извиняюсь за долгий неответ) Грубо говоря, да. А если lame попросить сконверить wav в mp3, то он будет показывать процент выполнения конвертации, который мне и нужно получить парсингом и показать в прогресс баре.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...