Доброго времени суток!
Столкнулся с задачкой перевести с языка actionscript на язык object pascal. С delphi проблем у меня нет, но вот правильно понять содержимое скрипта немогу. Помогите пожалуйста.
В целом механика мне понятна. Процедура перекодирует входные данные и возвращает нужный код. Но есть непонятности в ленгвистике actionscript, которые меня ставят в тупик.
Далее переведу код и как я его понял, посмотрите и поправьте те места где я не прав:

Код AS1/AS2:
state.onAnswer=function(data) //некая функция с входным параметром data
{
debug(this, "onAnswer!"); // что-то связанное с отладкой
var __reg4=[data.a, data.b, data.c, data.d, data.e]; //заполняем массив __reg4 данными из data, только непонимаю механику присваивания, всмысле что это за тип данных, когда ?индексы? идут буквами через точку
__reg4.sort(); // сортируем массив по возрастанию
var __reg3=[]; // инициализация пустого массива __reg3
__reg3.push(__reg4[4]); // помещаем пятый эл-т массива __reg4 в массив _reg3 c индексом [0] (т.е. команда push помещает эл-т в конец массива)
__reg3.push(__reg4[2]); // продолжаем действовать в том же духе
__reg3.push(__reg4[0]); // продолжаем действовать в том же духе
__reg3.push(__reg4[3]); // продолжаем действовать в том же духе
__reg3.push(__reg4[1]); // продолжаем действовать в том же духе
tableA={}; // инициализируем массив tableA, только непонял почему не var и почему "{}"
tableA["0"]="4"; // заполняем его
tableA["1"]="c";
tableA["2"]="f";
tableA["3"]="b";
tableA["4"]="3";
tableA["5"]="5";
tableA["6"]="a";
tableA["7"]="6";
tableA["8"]="9";
tableA["9"]="8";
tableA.a="d"; // а что это такое вообще понять не могу... вроде обращаемя по индексу а тут какие то ".a" и пр.
tableA.b="0";
tableA.c="2";
tableA.d="e";
tableA.e="7";
tableA.f="1";
tableB={};
tableB["0"]="a";
tableB["1"]="4";
tableB["2"]="9";
tableB["3"]="6";
tableB["4"]="0";
tableB["5"]="1";
tableB["6"]="f";
tableB["7"]="e";
tableB["8"]="5";
tableB["9"]="2";
tableB.a="d";
tableB.b="0";
tableB.c="2";
tableB.d="e";
tableB.e="7";
tableB.f="1";
var __reg2=undefined; // инициализация неидентифицированного массива __reg3
for (var __reg5 in __reg3) // делаем следующий в {} код для каждого элемента массива, где индекс массива - __reg5
{
__reg2=__reg3[__reg5].split(""); // __reg2 присваиваем побуквенно ячейка массива __reg3, которая с индексом __reg5
i=0; // обнуляем i
while (i<__reg2.length) // пробегаем массив __reg2 от начала до конца
{
if (i%2==0) // если i четное, то
{
__reg2[i]=tableA[__reg2[i]]; // заменяем i-ый элемент массива __reg2 элементом таблицы tableA c индексом равным текущему элементу __reg2
}
else // если i нечетное, то
{
__reg2[i]=tableB[__reg2[i]]; // заменяем i-ый элемент массива __reg2 элементом таблицы tableB c индексом равным текущему элементу __reg2
}
++i; // прибавляем i единицу
}
__reg2=__reg2.reverse(); // переворачиваем __reg2 задом на перед
__reg3[__reg5]=__reg2.join("").substr(0,10); // __reg3 с индексом 5 прсваеваем строку полученную сливанием массива __reg2 и обрезанием хвоста начиная с 11 символа
}
trace(data.test); // вывод в output - data.test, но непонятно что значит .test
trace(__reg3.join(" ")); // вывод в output слитего __reg3
this.arKey=__reg3; // судя по всему это как раз и есть присваевание какой-то внешней переменной перекодированного массива __reg3
this.changeState(); // что-то типа выхода из процедуры?
}
вот такая у меня головная боль... буду очень признателен за помощь... спс