Page 3 of 17

Posted: Fri Feb 24, 2012 2:46 pm
by FeyFre
Не расскажите как это сделать?
В смысле автозапуск фунцкии которая этого не поддерживает? Это делается параметрами запуска программы. Установите параметра редактора CmdLineBegin или CmdLineEnd в следующее: /Call("Log::Output") и будет Вам счастье.(Что это за параметры можно почитать в документации. )
А в Скрипты Вы это напрасно пошли. Там немного не так оно вызывается, да и не нужно это Вам сейчас.

Posted: Fri Feb 24, 2012 4:21 pm
by Sergeyka
Работает, спасибо!

Code: Select all

А в Скрипты Вы это напрасно пошли. Там немного не так оно вызывается
Ок. Будут вопросы, буду задавать вопросы в соответствующую ветку.

Posted: Sun Feb 26, 2012 12:50 am
by Sergeyka
Почему-то в LogView не в реальном времени обновляется информация...
Вот запустил я эмулятор. В коммандной строке бегут цифры - это функция Print работает.

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

Для ясности, записал видео - http://dump.ru/file/5619554


з.ы. В настройках Watch выставлял как 1, 100 и сейчас стоит тысяча мс - ничего не меняется..

Posted: Sun Feb 26, 2012 1:18 am
by FeyFre
Sergeyka
Попробовал у себя - текст подтягивается по мере поступления, а не потом. Может быть Ваш эмулятор крутит носом(по идее процесс вполне способен определить, что является его дескрипторами 1 и 2, и по разному может себя вести). В любом случае, у нас есть два неизвестных: страдает ли чемто специфическим Ваш эмулятор(на сколько он отличается в работе от COMSPEC), и Ваша система(Не свихнули Вы ей случайно мозги? Бывает.).

Posted: Sun Feb 26, 2012 5:05 am
by Sergeyka
FeyFre wrote:Sergeyka
Может быть Ваш эмулятор крутит носом(по идее процесс вполне способен определить, что является его дескрипторами 1 и 2, и по разному может себя вести).
Хм..Вполне. С недавних пор автор заявил о поддержке Decoda(lua debugger), т.ч. вполне может быть.
Та-же команда ping -t100 ya.ru - нормально отрабатывает. Кстати, официальный эмулятор(или симулятор) вообще не запускается. Вернее запускается, но все идет в консоль, а окна самой игры нет=)
FeyFre wrote: Ваша система(Не свихнули Вы ей случайно мозги? Бывает.).
Это тоже может быть, т.к. системе уже где-то 5 лет, а экспериментов проводилось на ней множество =) Лениво переставлять проги. Проще (вернее интереснее) найти решение проблемы и обезвредить.

Я вот подумал, что незачем использовать LogView, можно просто вызывать эмулятор и также смотреть на консоль.

Posted: Mon Feb 27, 2012 9:36 am
by DV
Sergeyka wrote:Я вот подумал, что незачем использовать LogView, можно просто вызывать эмулятор и также смотреть на консоль.
Тоже вариант. А идея перехвата в LogView по большей части в том, чтобы всё было как бы частью интерфейса одной программы (AkelPad), без дополнительных консольных окон (которые приходится каждый раз закрывать вручную).
Что касается задержки в появлении сообщений, то это вина самой запускаемой программы + механизма перенаправления Windows. Если консольная программа явно вызывает fflush() при каждом выводе текста, то этот текст появится тут же, без задержек. (Команда fflush заставляет обработать буфер вывода немедленно.) Иначе (без fflush) механизм перенаправления консольного вывода может просто накапливать текст в своём внутреннем буфере и показать его только по заполнению этого буфера или уже по завершению работы консольной программы.

Posted: Mon Feb 27, 2012 4:38 pm
by Sergeyka
DV wrote: и показать его только по заполнению этого буфера или уже по завершению работы консольной программы.
А в саму консоль отправляется-то в реальном времени. Но это наверное заморочки симулятора.

Мне бы теперь разобраться с запуском через Ctrl+F5. Эту проблему я описал в треде "Найденные баги"..
update:
Моя ошибка была. Все отписал там-же, в "багах".

Posted: Mon Mar 05, 2012 10:43 am
by Fr0sT
Сам писал эмулятор консольных прог с перехватом вывода, и так и не одолел проблему буферизации. Практически все сишные проги страдают от этого недостатка. Решить можно разве что сканированием окна консоли, но это изврат. Так что юзаем что дают.

Posted: Thu Mar 08, 2012 4:59 pm
by Instructor
Добавлено: поддержка автозагрузки для Log::Output.

Added: autoload support for Log::Output .


Log plugin v1.5

Posted: Thu Mar 08, 2012 7:32 pm
by FeyFre
Всё-таки настаиваю на фичреквесте, а то немного начинает надоедать.

Posted: Thu Mar 08, 2012 7:59 pm
by Instructor
FeyFre
Log и Sessions теперь передают TRUE в lParam.

Code: Select all

SendMessage(hMainWnd, WM_COMMAND, IDM_FILE_NEW, TRUE)
Также из Sessions убран внешний вызов с кодом 11.

Posted: Tue Mar 13, 2012 12:36 pm
by DV
Научился ронять плагин Log...
Воспроизведение сводится вот к чему:
Из скрипта запускаем

Code: Select all

AkelPad.Call("Log::Output", 1, "cmd /c C:\\tools\\tcc\\tcc.exe || pause", "");
Плагин Log показывает "Press any key to continue . . . " и, очевидно, ждёт ввода.
Но мы вместо этого опять запускаем

Code: Select all

AkelPad.Call("Log::Output", 1, "cmd /c C:\\tools\\tcc\\tcc.exe || pause", "");
Судя по всему, плагин не блокирует отработку этого действия.
Теперь нажимаем на крестик плагина Log, и весь AkelPad падает.

(Понимаю, что в данном случае с обёрткой "cmd /c ... || pause" я не очень прав, но плагин-то всё равно падать не должен.)

Posted: Tue Mar 13, 2012 4:53 pm
by Instructor
Исправлено: запуск новой команды, когда предыдущая еще выполняется (Log::Output).

Fixed: new command launch when the previous one is still running (Log::Output).


Log plugin v1.7

Posted: Wed Mar 14, 2012 11:00 am
by DV
А как обстоят дела у плагина 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."

Posted: Wed Mar 14, 2012 12:12 pm
by FeyFre
DV, на сколько я понимаю окружение наследуется от процесса. По крайней мере Call("Log::Output",1,"%comspec% /c blah",...) работает(пару версий назад аналогичный вызов через ГУЙ переменные не подставлял). Если нужно особые установить, то придется скорее всего писать батничек. Хотя действительно чего-то типа /usr/bin/env для винды не помешает.