Исходники здесь
Вот такие скомпилированные версии есть у меня.
Ниже данные устарели.
Репозиторий находится тут (открывать через SVN клиент)
Удобный просмотр репозитория через браузер тут
Скомпилированные версии тут Пароль к архиву: coderx.ru
Есть ли предложения по модернизации существующего кода с описанием как должно и что хотелось бы заменить/добавить?
Дополнительные компоненты брать тут. (<-- TPerlRegEx есть только там)
/upd:
для компиляции последних ревизий понадобятся JCL, JVCL (ссылки выше) а так же:
jwapi2.2a, SyntEdit, TRichView.v11.0+ScaleRichView.v2.0, TsiLang (letitbit / upload.com.ua)
Немного подправленный FastScript искать в файловом архиве.
Последний раз редактировалось NLObP, 17.10.2016 в 00:02.
Обе предоставленые - касательно скриптового енджина и выполняющихся в ним функций.
такой сбитый трейслог я видел несколько раз при попытке запускать полноценный скрипт в "дополнительно"
могу глянуть на сам скрипт/скрипты в этот момент запущенные ?
if fromserver\client and(pck[1]=#$xx) ... and(pck[x]=#$xx)then
pck:=''; // в одном случае тут pck:=HSTR('xx xx xx');
Добавлено через 12 минут
------------------------
Касательно второй ошибки в тот раз появилась так:
Открыл вкладку скрипты (2 фильтр скрипта по умолчанию включены), изменил сторонний скрипт, закрыл вкладку, нажал выход - ошибка. Соединения не перехватывались (или были проигнорированы). Повторить не удалось, но ошибка именно в 141, (ну по крайне мере до 128 включительно я ее никогда не видел) уже не первый раз. Но это очень не критично.
Добавлено через 2 минуты
ах да, если нужно могу скинуть все логи ошибоки чтения из памяти, которые были раньше.
Последний раз редактировалось pascalpwnz, 21.09.2009 в 00:29.
Причина: Добавлено сообщение
все эти симптомы возникают при использовании простейших скриптов изменяющих/убивающие пакет без использования write/readX ? (ответ сузит круг поиска)
Да. Все выглядит именно так, как в коде предыдущего поста.
Вспомнил, что в 3.4.* возникали проблемы при использовании pck:='';
Сделаю сейчас вместо этого pck[1]:=#$D5; (D5 вроде свободный пакет от сервера к клиенту... надеюсь...)
Добавлено через 38 минут
[s]Замена pck:=''; не помогла,[/s] 141 somefix завершился ошибкой, без error.log
Добавлено через 8 минут
error.log 141 http://dump.ru/file/3450768
error.log 122 (со второй машины на удивление всего 2 записи об ошибке, хотя там я его использовал постоянно и он часто вылетал) http://dump.ru/file/3450769
Добавлено через 4 часа 44 минуты
Похоже предыдущий вылет был по иной более редкой причине.
А так после замены pck:=''; ПХ работает нормально уже 4+ часа.
С удивлением обнаружил, что один из фильтруемых пакетов постоянно приходит при каче (надо будет разобраться почему), отсюда и не стабильность относительно "мини задач". Но! Версия 3.4.* сразу ругалась на ошибку чтения из памяти, если скрипт(или оператор) ниже пытался прочитать пустой пакет, тогда как в 3.5 этого не происходит, да и вообще этот используемый скрипт-фильтр все это время стоял ниже всех, могу только предположить, что уже где-то далее программа пытается прочитать пустой пакет, используя какое-то редко активируемое условие. Хотя тут вам видней.
Добавлено через 1 час 50 минут
Через 6+ часов работы пх опять закрылся ошибкой без логов. Это уже явно другая ошибка, как ее диагностировать ?
Последний раз редактировалось pascalpwnz, 21.09.2009 в 08:04.
Причина: Добавлено сообщение
не надо так делать...
pck:=#$D5 - воттак лучше..
а еще лучше
pck:=''
ибо если pck = '' то выражение вида pck[1] приведет к ошибке.
вот так тоже не надо делать:
if pck[1] = xx and pck [10]= yy then
при условии что у нас пакет длинной ниже 10.
так что проверяй длинну пакета либо делай так
if pck[1] = xx then
if pck [10]= yy then //это условие будет проверяться только если тип пакета = хх (при условии что пакет хх имеет по определению такую длинну)
либо через кейс.
при чем после обнуления пцк убедись что ниже нет условий обращающихся к его элементам (pck[1] и т.д.)
+1 в копилку за кейс.
к стати вот такие вот проебы могут стать причиной вылета. при чем ты ошибку максимум в статус баре увидишь. если увидишь -)
и НЕ забывать делать
if pck = '' then exit; в САМОМ начале последующих скриптов.
я чуть попожже все таки добавлю такую проверку в самом пх, и он просто не будет запускать скрипт в цепочке при условии что пцк пуст (был обнулен)
а так больше замечаний нет.
скорей всего это с ватчлистом связано. гляну чтот там по чем как только сделаю работу на сегодня (я же не безработный.. как бы.. еще -))
Добавлено через 7 минут
Цитата:
я чуть попожже все таки добавлю такую проверку в самом пх
поправил по быстрому. заодно обнаружил другой косяк но с обработкой пакетов в плагинах.
перезалил под тем же билдом.
чуть пожже займусь разбором ватчлиста.
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 21.09.2009 в 12:36.
Причина: Добавлено сообщение
За это сообщение alexteam нажился 3 спасибками от:
сделал отключение чтения значений из фастскрипта при скрытом ватчлисте.
ускорит работу и уберет излишний геморрой с вартайпаррай.
перезалил.
Добавлено через 2 часа 3 минуты
глянул лог ошибок... все таки... всего 4 штуки те что определенно можно локализировать. повторений много.
вход в редактор в "дополнительно". был поправлен вчера.
(00271A9D){l2ph.exe } [00672A9D] uScriptEditor.TfScriptEditor.EditorEnter (Line 396, "units\uScriptEditor.pas" + 1) + $1D
разрушение обьектов когда енкдек разрушался перед автоматическим сохранением лога пакетов при выходе (где использовался енкдек.коннектнаме).
еще вчера поправил. это все ексепшины имеющее строчку:
(0026ADC0){l2ph.exe } [0066BDC0] uVisualContainer.TfVisual.deinit (Line 246, "units\uVisualContainer.pas" + 12) + $A
вот это по идее только что поправил опять же связано с неправильным порядком разрушения объектов при выходе с пх (некритично):
(00272CB9){l2ph.exe } [00673CB9] uScripts.TScript.Destroy (Line 317, "units\uScripts.pas" + 4) + $F
(002732D1){l2ph.exe } [006742D1] uScripts.TfScript.DestroyAllScripts (Line 413, "units\uScripts.pas" + 2) + $D
вот это вылезло при компиляции скрипта, когда он не смог определить позицию ошибки в тексте (некритично).
поправил пытаться отмечать строчку не будет, будет только выводить в статус ошибку.
(0027C554){l2ph.exe } [0067D554] uData.TdmData.Compile (Line 1035, "units\uData.pas" + 5) + $28
и еще одна
думаю что она одна и таже, но отследить ее не могу ибо трейс сбит.
заканчиваеться вот такой фенькой
uVisualContainer.TfVisual.SavePacketLog
при чем выше по трейсу идет вообще билеберда, с рандомным порядком используемых юнитов упирающихся в ФС.
в общем, делетим еррор лог и пробуем переаплоаденный.
делимся впечатлениями.
Добавлено через 18 минут
в общем перезалил.
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 21.09.2009 в 15:07.
Причина: Добавлено сообщение
За это сообщение alexteam нажился 3 спасибками от:
вот так тоже не надо делать:
if pck[1] = xx and pck [10]= yy then
при условии что у нас пакет длинной ниже 10.
так что проверяй длинну пакета либо делай так
if pck[1] = xx then
if pck [10]= yy then //это условие будет проверяться только если тип пакета = хх (при условии что пакет хх имеет по определению такую длинну)
не бурусь гарантировать что в скриптовом движке это работает как и в дельфи, но в дельфи писать "if pck[1] = xx and pck [10]= yy then" было бы правильно ибо если первое условие ложно то второе уже не проверяется
__________________
Я здесь практически не появляюсь!, Skype - ikskor