|
|
|
Канал X3: Reunion »
Модовый и скриптовый отсек X3: Reunion: «X3 - External Script Editor» |
|
|
sergej4341
460 EGP
  Рейтинг канала: 5(139) Репутация: 148 Сообщения: 1593 Откуда: Химки/Брест Зарегистрирован: 16.01.2004
 |
|
Lazy Cat : |
и получаем проблему с распознаванием строки if not ....
|
в моем случае это было
skip if size of array $patrol.array
скрипт написаный во встроенном открывался во внешнем но не компилился
после редактирования строки в ExScE
$a = size of array $patrol.array
skip if $a
проблем не было
_________________ нажал клав. и затаил дыхание |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Добавлю еще багов
Некорректно обрабатываются строки с символами "{" "}" "\" при считывании скрипта. Т.е. написать скрипт с ними проблем нет, открыть потом во встроенном - тоже.
А вот написать, сохранить, а потом попробовать открыть - хренушки.
На простых - они просто теряютсяю
Для примера вот такой скрипт прекрасно вводится
Скрипт | Код |
Код: |
$t1 = "{"
$t2 = "}"
$t3 = "\"
$t4 = "/"
* {}
return null
|
|
Код: |
Code Array:
Array of 10 elements:
type=string; val=test_str
type=int; val=32
type=string; val=
type=int; val=0
type=int; val=0
Array of 3 elements:
type=string; val=t1
type=string; val=t2
type=string; val=t3
Array of 4 elements:
Array of 7 elements:
type=int; val=104
type=int; val=0
type=int; val=1
type=int; val=5
type=string; val={
type=int; val=1
type=int; val=-1
Array of 7 elements:
type=int; val=104
type=int; val=1
type=int; val=1
type=int; val=5
type=string; val=}
type=int; val=1
type=int; val=-1
Array of 7 elements:
type=int; val=104
type=int; val=2
type=int; val=1
type=int; val=5
type=string; val=\
type=int; val=1
type=int; val=-1
Array of 3 elements:
type=int; val=103
type=int; val=0
type=int; val=0
type=int; val=0
Array of 1 elements:
Array of 3 elements:
type=int; val=3
type=int; val=1
type=string; val={}
type=int; val=0
|
| А после повторного открытия получаем:
Скрипт | Код |
Код: |
$t1 = ""
$t2 = ""
$t3 = ""
$t4 = "/"
*
return null
|
|
Код: |
Code Array:
Array of 10 elements:
type=string; val=test_str
type=int; val=32
type=string; val=
type=int; val=0
type=int; val=0
Array of 4 elements:
type=string; val=t1
type=string; val=t2
type=string; val=t3
type=string; val=t4
Array of 5 elements:
Array of 7 elements:
type=int; val=104
type=int; val=0
type=int; val=1
type=int; val=5
type=string; val=
type=int; val=1
type=int; val=-1
Array of 7 elements:
type=int; val=104
type=int; val=1
type=int; val=1
type=int; val=5
type=string; val=
type=int; val=1
type=int; val=-1
Array of 7 elements:
type=int; val=104
type=int; val=2
type=int; val=1
type=int; val=5
type=string; val=
type=int; val=1
type=int; val=-1
Array of 7 elements:
type=int; val=104
type=int; val=3
type=int; val=1
type=int; val=5
type=string; val=/
type=int; val=1
type=int; val=-1
Array of 3 elements:
type=int; val=103
type=int; val=0
type=int; val=0
type=int; val=0
Array of 1 elements:
Array of 3 elements:
type=int; val=4
type=int; val=1
type=string; val=
type=int; val=0
|
| На более сложных - получаю вот такую ошибку:
И еще в догонку - при установленном 3-м нете такой вот глючок
З.Ы. Нет сам приполз, через апдейт .
_________________ Умножим энтропию на 0 :-) |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
sergej4341 : |
Lazy Cat : |
и получаем проблему с распознаванием строки if not ....
|
в моем случае это было
skip if size of array $patrol.array
скрипт написаный во встроенном открывался во внешнем но не компилился
после редактирования строки в ExScE
$a = size of array $patrol.array
skip if $a
проблем не было
|
Для исправления этой ошибки (неправильно определение типов переменных у команды) надо сделать следующее:
в каталоге Data
в файле command.xml
изменить
с
было : |
<subroot id="103">
<command id="128">
<type id="15" />
<type id="10" />
</command>
<command id="129">
<type id="25" />
<type id="45" />
<type id="10" />
</command>
<command id="130">
<type id="45" />
<type id="10" />
<type id="9" />
</command>
<command id="131">
<type id="15" />
<type id="45" />
</command>
|
исправленная версия : |
<subroot id="103">
<command id="128">
<type id="15" />
<type id="10" />
</command>
<command id="129">
<type id="25" />
<type id="45" />
<type id="10" />
</command>
<command id="130">
<type id="45" />
<type id="10" />
<type id="9" />
</command>
<command id="131">
<type id="25" />
<type id="45" />
</command>
|
З.Ы. надо свой справочник перешерстить, на соответствие типов параметров у команд. Если вдруг в справочнике нашли несоответствие - кричите, т.к. это исправит ошибку и во внешнем редакторе
З.З.Ы. К модераторам - прошу прощение за два поста, но уже больно они длинные, если все-таки нельзя - объединю.
_________________ Умножим энтропию на 0 :-) |
|
|
AlexV
555 EGP
       Рейтинг канала: 7(561) Репутация: 182 Сообщения: 1157 Откуда: нискажу Зарегистрирован: 10.01.2006
 |
|
Chem : |
И еще в догонку - при установленном 3-м нете такой вот глючок
|
если ты про съезжающие номера строк, то это скорее фишка
и связана она с включенными крупными шрифтами
или это у тебя на обычных такое?
_________________ а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого
Последний раз редактировалось: AlexV (03:24 15-04-2007), всего редактировалось 1 раз |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
AlexV : |
и связана она с включенными крупными шрифтами
или это у тебя на обычных такое? Ух ты!..
|
На обычных.
Я скорее на 3-й НЕТ грешу, т.к. с ним и прокрутка нормально не включается.
На 2000 и на 2-м нете - таких приколов нет
Upd.
глюк - (по-моему уже писали) -
в этой команде
<?> get index of <?> in array <?> offset=<?> \053 1
при считывании скрипта теряет символ "\" - потом говорит про ошибку, не подсвечивая ее.
Пожелание - добавить пробел перед запятой в списке параметров команд,
т.е. вместо
<?>sprintf: fmt=<?>, <?>, <?>, <?>, <?>, <?>
подставлять значение
<?>sprintf: fmt=<?> , <?> , <?> , <?> , <?> , <?>
Нужно для того чтобы нормально срабатывала автоподстановка при вводе переменных, т.к. "," мешает нормальной ее отработке, добавляю пробел перед ней - все ок.
_________________ Умножим энтропию на 0 :-) |
|
|
Lazy Cat
405 EGP
  Рейтинг канала: 4(64) Репутация: 145 Сообщения: 2148 Откуда: Украина, Тернополь Зарегистрирован: 16.04.2004
 |
|
Попытка набрать строку
приводит к вылету редактора.
_________________ Еж - птица гордая ...
А тут столько летающих eg-й %) |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Lazy Cat : |
Попытка набрать строку
Код:
if $var = $array[1]
приводит к вылету редактора.
|
ага, и вообще все последние вылеты (хотя перехват исключений срабатывает прекрасно, и работа продолжается) связаны у меня были только с условными операторами.
_________________ Умножим энтропию на 0 :-) |
|
|
ULiX
320 EGP
      Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005
 |
|
И снова я...
Как обычно с принципиальными ошибками.
У меня талант их находить. За это меня и любят на своём рабочем месте. По роду занятий мне приходится писать программы для контролирования научных приборов. Причем пользователями этих программ являются рядовые студенты, поэтому программы должны быть максимально защищены от ошибок. Я обычно в описаниях к своим программам пишу, что в программе слабая защита от ошибок... хотя предусматриваю варианты на уровне "достаточном" для безпроблемного использования. Ладно... это было лирическое отступление. Теперь к проблеме.
После долгой паузы, я решил выкрасть время и снова приступить к скриптописанию. Всё бы хорошо, но через пол часа работы мои скрипты перестали компилироваться в eScE. Дабы не потерять уже сделанного, пришлось набрать проблемные моменты во встроенном редакторе... Заодно выяснил, в какой строчке проблема.
Вот снова некоректно обрабатываемая команда в eScE:
<RetVar> = get index of <Value> in array <Var/Array> offset=<Var/Number> + 1
Думаю, исправить будет не сложно.
А пока обошёл эту проблему алгоритмическим путём: циклический перебор элементов массива и нахождения нужной позиции.
Но проблема на лицо.
Кстати.
Предлагаю следующий вариант решения проблем появления последующих ошибок с неверной обработкой команд.
Создать один тестовый скрипт с набором всех существующих команд. Скрипт не обязан быть рабочим, но содержать все известные команды, и желательно со всеми возможными типами данных в своих параметрах. И каждый раз при модернизациях пытаться сделать Rebuild этого скрипта для выявления проблематичных моментов.
Получается так, что eScE сейчас настроен только на общеиспользуемые команды, а так как множество команд просто не используется скриптёрами, то и ошибки не всплывают, хотя и таятся в недрах программы.
_________________ Новое ещё не значит лучшее |
|
|
ULiX
320 EGP
      Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005
 |
|
Lazy Cat : |
Попытка набрать строку Код:
if $var = $array[1]
приводит к вылету редактора.
|
А ты попробуй сделать подобное во встроенном
Увы, приходится делать типо:
$TempVar = $array[1]
if $var == $TempVar
А то что ты предлагаешь содержит две ошибки:
1. В условных операторах не применим оператор присвоения "="
2. В ScE обработка массиво осуществляется только специальными командами, и нет возможности использовать элементы массива в качестве аргументов для других команд.
Ошибкой будет являться также и простая команда:
inc $array[1]
Другое дело, что eScE не предусматривает обработку подобных ошибок и налагает эту обязаность на скриптёра.
Вывод: пользоваться eScE должны скриптёры с хорошим опытом программирования во встроенносм ScE, дабы не забывать о специфики программирования в данной среде. eScE является средством, ускоряющим написание больших скриптов, предоставляющим удобные средства быстрого редактирования. eScE НЕ ЯВЛЯЕТСЯ средством создания новых возможностей командного процессора ScE, поэтому не будет коректно обрабатывать, по вашему мнению, более удобный код, который невозможно набрать во встроенном редакторе.
_________________ Новое ещё не значит лучшее |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
ULiX : |
<RetVar> = get index of <Value> in array <Var/Array> offset=<Var/Number> + 1
|
А выше посмотреть ?
Chem : |
глюк - (по-моему уже писали) -
в этой команде
<?> get index of <?> in array <?> offset=<?> \053 1
при считывании скрипта теряет символ "\" - потом говорит про ошибку, не подсвечивая ее.
|
Записывать надо не так как у тебя, ты хотя бы попробуй через контрол- пробел подставить шаблон команды и сразу увидишь, что не так.
в EScE (последних версий) они имеет вид именно такой:
<?> get index of <?> in array <?> offset=<?> \053 1, т.е. вместо плюса - его код , \053.
Но баг есть, и он в том, что символ "\" теряется при считывании из скрипта, пишем скрипт, там есть кучка
<?> get index of <?> in array <?> offset=<?> \053 1 - и все прекрасно открывается во встроенном, и все работает. Однако если потом этот скрипт загрузить в EScE - то он потеряет "\" и надо просто запустить замену глобальную " 053" на " \053" - и все хорошо.
ULiX : |
Lazy Cat :
Попытка набрать строку Код:
if $var = $array[1]
приводит к вылету редактора.
А ты попробуй сделать подобное во встроенном Гы-гы
Увы, приходится делать типо:
$TempVar = $array[1]
if $var == $TempVar
|
Угу, потому (не в качестве саморекламы) - смотрите справочник команд (мой, его прародитель от Дракона, на форуме, во встроенном), там сразу видно тип возвращаемого значения, если там нет IF - то болт.
И вообще - массивы они конечно ввели, но удобства работы с ними пока мало
_________________ Умножим энтропию на 0 :-) |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Дополнение, хотя не бал, но проблема.
Столкнулся с тем, что написав в EScE скрипт с проверкой типа данных
(is datatype), и он странно работал.
Столкнулся на конкретном типе, но решил проверить все.
Как проверял - сделал следующий скрипт во внешнем :
Код: |
001 $a = DATATYP_ARRAY
002 $a = DATATYP_CONST
003 $a = DATATYP_DATATYP
004 $a = DATATYP_EXPR
005 $a = DATATYP_FLRET
006 $a = DATATYP_INT
007 $a = DATATYP_NULL
008 $a = DATATYP_OBJCLASS
009 $a = DATATYP_OBJCOMMAND
010 $a = DATATYP_OBJECT
011 $a = DATATYP_OP
012 $a = DATATYP_QUEST
013 $a = DATATYP_RACE
014 $a = DATATYP_RELATION
015 $a = DATATYP_SECTOR
016 $a = DATATYP_SHIP
017 $a = DATATYP_STATION
018 $a = DATATYP_STATIONSERIAL
019 $a = DATATYP_STRING
020 $a = DATATYP_TRANSPORTCLASS
021 $a = DATATYP_UNKNOWN
022 $a = DATATYP_VAR
023 $a = DATATYP_WARE
024 return null
|
Открыл, во встроенном (открывается вроде правильно и текст совпадает, т.е. из кодов в текст перевелся вроде нормально) - пересохранил - отличий нет.
Тогда заново во встроенном перевбил эти константы - сохранил - есть различия в коде, вот они:
diff : |
--- esce_datatype.txt 2007-04-29 12:42:10.531250000 +0300
+++ int_datatype_rewr.txt 2007-04-29 12:48:22.250000000 +0300
@@ -45,7 +45,7 @@
4.
type=int; val=20
5.
- type=int; val=3
+ type=int; val=131075
6.
type=int; val=1
7.
@@ -173,7 +173,7 @@
4.
type=int; val=20
5.
- type=int; val=17
+ type=int; val=65553
6.
type=int; val=1
7.
@@ -253,7 +253,7 @@
4.
type=int; val=20
5.
- type=int; val=8
+ type=int; val=65544
6.
type=int; val=1
7.
@@ -269,7 +269,7 @@
4.
type=int; val=20
5.
- type=int; val=6
+ type=int; val=65542
6.
type=int; val=1
7.
@@ -285,7 +285,7 @@
4.
type=int; val=20
5.
- type=int; val=7
+ type=int; val=65543
6.
type=int; val=1
7.
@@ -365,7 +365,7 @@
4.
type=int; val=20
5.
- type=int; val=2
+ type=int; val=131074
6.
type=int; val=1
7.
|
Т.е. имеем следующие расхождения
Константа | значение EScE (440001.xml) | Значение во встроенном ScE | DATATYP_CONST | 3 | 131075 | DATATYP_OBJECT | 17 | 65553 | DATATYP_SECTOR | 8 | 65544 | DATATYP_SHIP | 6 | 65542 | DATATYP_STATION | 7 | 65543 | DATATYP_DATATYP | 20 | 131074 | Остальные совпадают.
При этом наблюдаю странное , открытие файла из встроенного во внешнем, тоже дает правильный текст, т.е. значения констант из встроенного обрабатываются правильно, однако пересохранение приводит опять к ошибочному результату.
Шо делать ?
_________________ Умножим энтропию на 0 :-) |
|
|
AlexV
555 EGP
       Рейтинг канала: 7(561) Репутация: 182 Сообщения: 1157 Откуда: нискажу Зарегистрирован: 10.01.2006
 |
|
терпеть... чуть-чуть осталось
к концу этой недели, надеюсь, что разгребусь на работе
в некоторых местах я замечал малопонятные битовые сдвиги ... в одном уже убрал, т.к. он давал неправильный код, сдесь похожая проблема
_________________ а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого
Последний раз редактировалось: AlexV (04:27 30-04-2007), всего редактировалось 1 раз |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
AlexV : |
терпеть... чуть-чуть осталось
к концу этой недели, надеюсь, что разгребусь на работе
|
Ок, прекрасно понимаю ...
ДА и сейчас редактор - очень даже, я практически перестал пересохранять во встроенном
_________________ Умножим энтропию на 0 :-) |
|
|
sergej4341
460 EGP
  Рейтинг канала: 5(139) Репутация: 148 Сообщения: 1593 Откуда: Химки/Брест Зарегистрирован: 16.01.2004
 |
|
вроде как глюк...
скрипт, правленный/переписаный в ExScE и сохраненный с ребилдом нормально открылся в ScE но вот закрываться отказался
причина в лишнем end который был незамечен ExScE
_________________ нажал клав. и затаил дыхание |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Хочу
Опцию, при выборе которой каждое сохранение меняло версию скрипта.
И вообще - работу с софтом который сохраняет версии, типа cvs, или хотя бы, сохранение старой версии скрипта (при его пересохранении) с добавлением в имя предыдущей версии (совместно с автоверсией).
Вот!
_________________ Умножим энтропию на 0 :-) |
|
|
sergej4341
460 EGP
  Рейтинг канала: 5(139) Репутация: 148 Сообщения: 1593 Откуда: Химки/Брест Зарегистрирован: 16.01.2004
 |
|
скрипт написанный во встроенном редакторе содержит такую строку
[THIS] -> put into environment $temp ->
после загрузки и редактирования во внешний при попытке сохранения - ребилд файлед
и эта строка принимает вид
[THIS] -> put into environment$temp ->
после добавлении нужного пробела перед $temp все нормально ребилдится и сохраняется
_________________ нажал клав. и затаил дыхание |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Плюс еще баг нашел,
если начать писать конструкцию вида
$variable.kakay.to = , и так и оставить, то потом встроенный прекрасно открывает, компилирует, но потом игра на этой точке виснет.
З.Ы.
$variable.kakay.to без равно- тоже оставляет, но проверять дальше во встроенном поведение - не стал
_________________ Умножим энтропию на 0 :-) |
|
|
AD
|
|
В eScE не работает унарная операция вычитания
Например:
$a = 5
$b = - $a
Переменной b присваивается значение null
В стандартном ScE все работает
|
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
1. Алекс - как дела ?
2. Народ, тут вроде светились монстры программирования
Есть просьба - сделать редактор для текстовых файлов (которые с текстовыми сообщениями для скриптов и т.п.)
Я пользовался блокнотом потом Microsoft Visual Web Developer 2005.
Девелопером удобнее, но и в нем нет проверки орфографии или я не нашел как подключить.
А надо простенькую фигню - читать хмл, не стремиться особо его разобрать, перенос строк при длинных строках (ну как в Ворде ), и проверка орфографии!! потому что даже перенос текста в ворд и потом проверка - ну пропуски есть , еще бы отдельную подсветку для комбинаций вида \033G по цветам , подсветка [] ну и %s
_________________ Умножим энтропию на 0 :-) |
|
|
AlexV
555 EGP
       Рейтинг канала: 7(561) Репутация: 182 Сообщения: 1157 Откуда: нискажу Зарегистрирован: 10.01.2006
 |
|
Chem : |
1. Алекс - как дела ?
|
нормально, наконец-то в отпуске и начинаю дальше редактором заниматься
Chem : |
Есть просьба - сделать редактор для текстовых файлов (которые с текстовыми сообщениями для скриптов и т.п.)
|
посмотри PSPad тут
http://www.pspad.com/ru/ в нем есть всё, что ты перечислил
_________________ а хуже всего приходится программистам из Microsoft. Им в случае чего и обругать-то некого
Последний раз редактировалось: AlexV (10:59 18-06-2007), всего редактировалось 1 раз |
|
|
|
|
|
Канал X3: Reunion ->
Модовый и скриптовый отсек X3: Reunion: «X3 - External Script Editor» |
|