View previous topic :: View next topic |
Author |
Message |
FeyFre
Joined: 07 Aug 2007 Posts: 2240 Location: Vinnitsa, Ukraine
|
Posted: Fri Feb 24, 2012 2:46 pm Post subject: |
|
|
Quote: | Не расскажите как это сделать? | В смысле автозапуск фунцкии которая этого не поддерживает? Это делается параметрами запуска программы. Установите параметра редактора CmdLineBegin или CmdLineEnd в следующее: /Call("Log::Output") и будет Вам счастье.(Что это за параметры можно почитать в документации. )
А в Скрипты Вы это напрасно пошли. Там немного не так оно вызывается, да и не нужно это Вам сейчас. |
|
Back to top |
|
 |
Sergeyka
Joined: 21 Feb 2012 Posts: 14 Location: Voronezh
|
Posted: Fri Feb 24, 2012 4:21 pm Post subject: |
|
|
Работает, спасибо!
Code: | А в Скрипты Вы это напрасно пошли. Там немного не так оно вызывается |
Ок. Будут вопросы, буду задавать вопросы в соответствующую ветку. |
|
Back to top |
|
 |
Sergeyka
Joined: 21 Feb 2012 Posts: 14 Location: Voronezh
|
Posted: Sun Feb 26, 2012 12:50 am Post subject: |
|
|
Почему-то в LogView не в реальном времени обновляется информация...
Вот запустил я эмулятор. В коммандной строке бегут цифры - это функция Print работает.
А когда запустил через LogView - то появляется первоначальное сообщение. А цифры появятся только после того, как закрою эмулятор.
Для ясности, записал видео - http://dump.ru/file/5619554
з.ы. В настройках Watch выставлял как 1, 100 и сейчас стоит тысяча мс - ничего не меняется.. |
|
Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 2240 Location: Vinnitsa, Ukraine
|
Posted: Sun Feb 26, 2012 1:18 am Post subject: |
|
|
Sergeyka
Попробовал у себя - текст подтягивается по мере поступления, а не потом. Может быть Ваш эмулятор крутит носом(по идее процесс вполне способен определить, что является его дескрипторами 1 и 2, и по разному может себя вести). В любом случае, у нас есть два неизвестных: страдает ли чемто специфическим Ваш эмулятор(на сколько он отличается в работе от COMSPEC), и Ваша система(Не свихнули Вы ей случайно мозги? Бывает.). |
|
Back to top |
|
 |
Sergeyka
Joined: 21 Feb 2012 Posts: 14 Location: Voronezh
|
Posted: Sun Feb 26, 2012 5:05 am Post subject: |
|
|
FeyFre wrote: | Sergeyka
Может быть Ваш эмулятор крутит носом(по идее процесс вполне способен определить, что является его дескрипторами 1 и 2, и по разному может себя вести). |
Хм..Вполне. С недавних пор автор заявил о поддержке Decoda(lua debugger), т.ч. вполне может быть.
Та-же команда ping -t100 ya.ru - нормально отрабатывает. Кстати, официальный эмулятор(или симулятор) вообще не запускается. Вернее запускается, но все идет в консоль, а окна самой игры нет=)
FeyFre wrote: |
Ваша система(Не свихнули Вы ей случайно мозги? Бывает.). |
Это тоже может быть, т.к. системе уже где-то 5 лет, а экспериментов проводилось на ней множество =) Лениво переставлять проги. Проще (вернее интереснее) найти решение проблемы и обезвредить.
Я вот подумал, что незачем использовать LogView, можно просто вызывать эмулятор и также смотреть на консоль. |
|
Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 1014 Location: Kyiv, Ukraine
|
Posted: Mon Feb 27, 2012 9:36 am Post subject: |
|
|
Sergeyka wrote: | Я вот подумал, что незачем использовать LogView, можно просто вызывать эмулятор и также смотреть на консоль. |
Тоже вариант. А идея перехвата в LogView по большей части в том, чтобы всё было как бы частью интерфейса одной программы (AkelPad), без дополнительных консольных окон (которые приходится каждый раз закрывать вручную).
Что касается задержки в появлении сообщений, то это вина самой запускаемой программы + механизма перенаправления Windows. Если консольная программа явно вызывает fflush() при каждом выводе текста, то этот текст появится тут же, без задержек. (Команда fflush заставляет обработать буфер вывода немедленно.) Иначе (без fflush) механизм перенаправления консольного вывода может просто накапливать текст в своём внутреннем буфере и показать его только по заполнению этого буфера или уже по завершению работы консольной программы. |
|
Back to top |
|
 |
Sergeyka
Joined: 21 Feb 2012 Posts: 14 Location: Voronezh
|
Posted: Mon Feb 27, 2012 4:38 pm Post subject: |
|
|
DV wrote: | и показать его только по заполнению этого буфера или уже по завершению работы консольной программы. |
А в саму консоль отправляется-то в реальном времени. Но это наверное заморочки симулятора.
Мне бы теперь разобраться с запуском через Ctrl+F5. Эту проблему я описал в треде "Найденные баги"..
update:
Моя ошибка была. Все отписал там-же, в "багах". |
|
Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 876
|
Posted: Mon Mar 05, 2012 10:43 am Post subject: |
|
|
Сам писал эмулятор консольных прог с перехватом вывода, и так и не одолел проблему буферизации. Практически все сишные проги страдают от этого недостатка. Решить можно разве что сканированием окна консоли, но это изврат. Так что юзаем что дают. |
|
Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 6250
|
Posted: Thu Mar 08, 2012 4:59 pm Post subject: |
|
|
Добавлено: поддержка автозагрузки для Log::Output.
Added: autoload support for Log::Output .
Log plugin v1.5 |
|
Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 2240 Location: Vinnitsa, Ukraine
|
Posted: Thu Mar 08, 2012 7:32 pm Post subject: |
|
|
Всё-таки настаиваю на фичреквесте, а то немного начинает надоедать. |
|
Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 6250
|
Posted: Thu Mar 08, 2012 7:59 pm Post subject: |
|
|
FeyFre
Log и Sessions теперь передают TRUE в lParam.
Code: | SendMessage(hMainWnd, WM_COMMAND, IDM_FILE_NEW, TRUE) |
Также из Sessions убран внешний вызов с кодом 11. |
|
Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 1014 Location: Kyiv, Ukraine
|
Posted: Tue Mar 13, 2012 12:36 pm Post subject: |
|
|
Научился ронять плагин Log...
Воспроизведение сводится вот к чему:
Из скрипта запускаем
Code: | AkelPad.Call("Log::Output", 1, "cmd /c C:\\tools\\tcc\\tcc.exe || pause", ""); |
Плагин Log показывает "Press any key to continue . . . " и, очевидно, ждёт ввода.
Но мы вместо этого опять запускаем
Code: | AkelPad.Call("Log::Output", 1, "cmd /c C:\\tools\\tcc\\tcc.exe || pause", ""); |
Судя по всему, плагин не блокирует отработку этого действия.
Теперь нажимаем на крестик плагина Log, и весь AkelPad падает.
(Понимаю, что в данном случае с обёрткой "cmd /c ... || pause" я не очень прав, но плагин-то всё равно падать не должен.) |
|
Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 6250
|
Posted: Tue Mar 13, 2012 4:53 pm Post subject: |
|
|
Исправлено: запуск новой команды, когда предыдущая еще выполняется (Log::Output).
Fixed: new command launch when the previous one is still running (Log::Output).
Log plugin v1.7 |
|
Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 1014 Location: Kyiv, Ukraine
|
Posted: Wed Mar 14, 2012 11:00 am Post subject: |
|
|
А как обстоят дела у плагина Log с переменнными окружения?
Вопрос не праздный, потому что скрипт RunMe.js для сборки файлов .cpp устанавливает переменные PATH, INCLUDE и LIB - и при запуске с помощью WshShell.Run или AkelPad.Exec всё работает. А при запуске с помощью AkelPad.Call("Log::Output", 1, cmd, dir) получаем "'cl' is not recognized as an internal or external command, operable program or batch file." |
|
Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 2240 Location: Vinnitsa, Ukraine
|
Posted: Wed Mar 14, 2012 12:12 pm Post subject: |
|
|
DV, на сколько я понимаю окружение наследуется от процесса. По крайней мере Call("Log::Output",1,"%comspec% /c blah",...) работает(пару версий назад аналогичный вызов через ГУЙ переменные не подставлял). Если нужно особые установить, то придется скорее всего писать батничек. Хотя действительно чего-то типа /usr/bin/env для винды не помешает. |
|
Back to top |
|
 |
|