Переадресация кода.

Russian main discussion
  • Author
  • Message
Offline
Posts: 8
Joined: Sun Jun 21, 2009 7:18 am

Переадресация кода.

Post by Resarcher »

Вывел на панель кнопки, для выполнения написанного в редакторе AkelPad кода, да не все работают корректно (кроме кода написанного на чистом HTML). Например, HTML-документ, содержащий JavaScript не выполняется следующим кодом кнопки:

Code: Select all

-"Выполнить HTML Code" Exec(`explorer.exe "%f"`) Icon(".....")
Да, и ещё вопросик. Установлен интепретатор ActivePerl, написал код кнопки выполнения Perl-кода, из AkelPad. Вот код:

Code: Select all

-"Выполнить Perl Code" Exec(`cmd.exe "%f"`,"d%") Icon(".....")
При нажатии на кнопку "Выполнить Perl Code" программа запускается, но там, где предусмотрено выполнение других последующих операций, например, запроса о вводе значения или выполнения инкремента, окно интепретатора тут же закрывается. Программы мной проверены и при обычном вызове интерпретатора работают.
Посоветуйте, как устранить данные недочёты. :)
Заранее благодарен.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Re: Переадресация кода.

Post by Instructor »

Resarcher wrote:Например, HTML-документ, содержащий JavaScript не выполняется следующим кодом кнопки:...
Возможно речь идет о Vista или Seven, если так, то вероятно блокирует система безопасности.
Да, и ещё вопросик.
Может:

Code: Select all

-"Выполнить Perl Code" Exec(`cmd.exe /k "%f"`,"d%") Icon(".....")
?

Offline
Posts: 8
Joined: Sun Jun 21, 2009 7:18 am

Post by Resarcher »

Извиняюсь. HTML-код с JavaScript выполняется. По своей невнимательности не разблокировал в броузере запрет на выполнение сценариев.
Что касается команды "Выполнить Perl Code", то после применения к cmd.exe ключа /k код стал выполняться.
Огромное спасибо.

Offline
Posts: 31
Joined: Thu Dec 11, 2008 11:27 pm

Post by MaximusMX »

Также интересует вопрос по работе с консолью. Аналогично пользуюсь вариантом:
Exec('cmd.exe /k "%f"',"%d")
однако есть 2 минуса:
1 - перед запуском каждый раз необходимо сохраняться
2 - сама консоль: неудобно работать + 2-е окно

Возможно ли реализовать перехват вывода результата роботы внешнего компилятора/консоли в отдельное окно (как у плагина HexSel) самого редактора ? Насколько я знаю такого плагина нет, потому буду крайне благодарен если найдется время на его написание или хотя бы вариант скрипта для плагина Scripts.
Заранее спасибо.

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

1) Это по любому, иначе как скормишь то, что сидит только в оперативке Акеля, другой программе?
2) А разница? Ну будет второе окно Акелевским... Что касается перехвата, то я как раз сделал класс для этих дел, правда, на Дельфях, но если кому-то понадобится — предоставлю.

Offline
Posts: 31
Joined: Thu Dec 11, 2008 11:27 pm

Post by MaximusMX »

1 - как вариант автоматическое сохранение файла перед запуском
2 - я некорректно выразился, у HexSel не самостоятельное окно, а панель.

в любом случае консоль это:
- нужно постоянно переключаться с консоли на редактор,
- при каждом запуске кол-во окон консоли растет,
- неудобная робота с текстом в консоли.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Fr0sT, а MSDN не пробовали почитать? Там есть полный пример как подменить stdin, stdout и stderr. [url=ms-help://MS.MSDNQTR.v90.en/dllproc/base/creating_a_child_process_with_redirected_input_and_output.htm]Вот[/url]

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

FeyFre, э... не очень понял смысл данного сообщения. Я вообще-то сказал, что уже сделал этот класс.

MaximusMX, то есть ты хочешь dockable - панель, куда будет выводиться текст компилятора, типа вот этого? :
Image

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Fr0sT
1) Это по любому, иначе как скормишь то, что сидит только в оперативке Акеля, другой программе?
Судя по этой Вашей фразе я сделал вывод что Вы не знаете как скормить эту самую память дургому приложению через поток ввода, вот и привел ссылку на пример.

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

FeyFre, то есть ты предлагаешь вместо запуска программы с параметром командной строки перехватить пайп ввода и направить несохранённый файл через него? Хм. Идея, конечно, интересная, правда, не знаю, насколько реализуема. Ведь если прога не считывает предназначенный для компиляции файл через stdin, а открывает его сама (что разумно), то ничего и не выйдет... То есть это сам компилятор должен иметь возможность получать файл на вход из stdin.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Да, согласен, если запускаемый софт читает файлы непосредсвенно(компиляторы естественно так всегда делают) то подствить им вместо файла память очень проблематично(но возможно, в определенных условиях!). А вот если нужно комуто на стандартный ввод подать данные: есть трубопровод - проблем нету.
А было бы неплохо сделать такой плаг: переганял бы содержимое через другое приложение и возвращал обратно(например через тот же sort) Так сказать фильтр текстовый. Нужно будет подумать....

Offline
Posts: 31
Joined: Thu Dec 11, 2008 11:27 pm

Post by MaximusMX »

Fr0sT wrote:MaximusMX, то есть ты хочешь dockable - панель, куда будет выводиться текст компилятора, типа вот этого? :
Image
да. редактируемый файл (bat, cpp, pas, pl, pm, т.п.) запускается на выполнение и все что выводится в консоли должно выводится в dockable панели.
из аналогов навскидку только PSPad вспомнил. был там такой пункт "запустить внешний компилятор". после запуска появлялась панель в которой отображался рез-тат роботы скрипта или компилятора. перед запуском редактируемый файл сохранялся.
Last edited by MaximusMX on Thu Jul 02, 2009 8:24 pm, edited 1 time in total.

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

FeyFre
ага, а если еще и дать возможность выбора.запоминания запущенных программ.параметров, ммм... не знаю, правда, как это применить - сортировка-то у нас есть - но фича крутая :).
MaximusMX
в принципе, думаю, фича будет достаточно востребованной. да и реализуется она не так уж сложно: док-панель уже есть в Clipboard.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Fr0sT, была бы фича, а приминение найдется :)
Так мы скоро договоримся, что AkelPad перерастет в IDE. А чего? Подсветка синтаксиса есть, автоподстановка есть, тулбары уже есть(можно и свои придумать), ещё пара плагов дописать(а лучше один комплесный), например для работы с популярными типами проектов для разных IDE, и для вызова соотв. компиляторов - и опа, IDE готово :)
(в голове куча идей, но руки не доходят :? )

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

FeyFre, осталось ещё решить проблему, что все плаги ваяет исключительно Инструктор, ну и парочку DV ))
Post Reply