Lazarus и запуск внешних приложений

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир »

Ism писал(а):Большинство функций libc перекочевали в модуль Unix с приставкой fp

О. Спасибо большое, посмотрю!
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Немного соврал, все юниксовые функции распределены по 3 модулям
Unix
http://www.freepascal.org/docs-html/rtl ... dex-5.html
BaseUnix
http://www.freepascal.org/docs-html/rtl ... dex-5.html
unixtype
http://www.freepascal.org/docs-html/rtl ... dex-3.html
Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир »

И еще раз спасиб!

Добавлено спустя 2 часа 19 минут 54 секунды:
Ism писал(а):Немного соврал, все юниксовые функции распределены по 3 модулям
Unix

Если я правильно понял, то добавляем в Uses Unix, а потом вместо libc.System(pChar) используем fpSystem(AnsiString) ? Вроде даже удобнее!
Кстати, обыскался по функциям работы с разд.памятью - оказались в модуле ipc.
salt
незнакомец
Сообщения: 2
Зарегистрирован: 19.12.2011 23:40:50
Откуда: Новгородская обл., дер.Толчино, иногда Санкт-Петербург
Контактная информация:

Сообщение salt »

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

Код: Выделить всё

echo "Это проговариваемая фраза." | festival --tts --language russian

В примерах есть такая конструкция:

Код: Выделить всё

shell('kwrite File_in_Russian.txt');

пытался делать по аналогии

Код: Выделить всё

shell('echo "Привет мир" | festival --tts --language russian'); 

, но ничего не получилось

Linux Lazarus v.0.9.30
Всем спасибо.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Здесь это уже обсуждалось.
Попробуйте tprocess или fpsystem

То, что вы делаете это несколько команд, а значит скорее всего надо

fpsystem ('sh -с "echo "Привет мир" | festival --tts --language russian"')

или запихнуть команды в файл скрипта , сделать его исполняемым и запускать fpsystem ('my_skript')

но лучше tprocess , так как он позволяет управлять характеристиками запуска
salt
незнакомец
Сообщения: 2
Зарегистрирован: 19.12.2011 23:40:50
Откуда: Новгородская обл., дер.Толчино, иногда Санкт-Петербург
Контактная информация:

Сообщение salt »

Ism писал(а):Здесь это уже обсуждалось.

Спасибо. Что-то я не внимательно тему просмотрел. Буду пробовать.
P.S. вот так работает:

Код: Выделить всё

fpSystem('echo "Привет мир." | festival --tts --language russian');
Последний раз редактировалось salt 25.12.2011 22:46:04, всего редактировалось 2 раза.
alexkam
постоялец
Сообщения: 152
Зарегистрирован: 07.09.2009 20:03:59

Сообщение alexkam »

Как запустить из Lazarus MS Excel Starter в Windows 7
Excel := CreateOleObject('Excel.Application');
Excel.WorkBooks.Open(URL);
Excel.Visible := True;
пишет ошибку, хотя для полного офиса все отлично работает.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Возможно в стартере тупо нес activex объекта
SuSe user
новенький
Сообщения: 13
Зарегистрирован: 02.10.2011 21:03:08

Сообщение SuSe user »

fpSystem работает только в паскале, а лазарус пишет "Fatal: Can't find unit fpSystem used by Unit2". Есть возможность это обойти?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

SuSe user писал(а):Есть возможность это обойти?

Для этого есть единственный, но совершенно стандартный способ - добавить в строку USES именно тот модуль, в котором содержится эта функция. ;) Название модуля найдёте сами или с этим есть какие-то проблемы?
Аватара пользователя
leo_bsv
постоялец
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола
Контактная информация:

Сообщение leo_bsv »

lol,... :P
Аватара пользователя
kotompazb
постоялец
Сообщения: 156
Зарегистрирован: 21.06.2012 13:03:39
Откуда: Novosibirsk, xUSSR

Сообщение kotompazb »

Здравствуйте, подскажите как запустить стороннее приложение под окнами средствами Lazarus.
Пытаюсь так:

Код: Выделить всё

ExecuteProcess('name.exe', '', []); 

В принципе приложение открывается, но открывшая его основная программа висит, пока его не закроешь. ЧЯДНТ?
Все. Разобрался. Извиняюсь.
Ответить