Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Помогите с шифрованием (http://www.flasher.ru/forum/showthread.php?t=73377)

MOHCTEP 22.12.2005 01:41

Вах! Чудеса какие-то!!!!
Код:

var str="абвгдежзийклмнопрстуфхцчшщъыьэюя";
var data:Array=[];
var sl=str.length;
trace(str+'\t'+str.length);
init();
function init(){
        var tmp:Array=str.split('');
        trace("1 трейс массива");
        for(var i=0;i<sl;i++){
                var a=tmp.shift();
                tmp.push(a);
                data.push(tmp);
                trace(i+'\t'+data[i]);
        }
        trace("А вот 2 трейс готового массива!");
        for(i=0;i<sl;i++){
                trace(i+'\t'+data[i]);
        }
}

Второй трейс кажет, что массив забит НЕМОДИФИЦИРОВАННЫМИ данными!???!
Это как это???

Bubblegum 23.12.2005 15:14

Неужели ни кто не знает как запрограммировать этот метод?
(Я знаю? что все знают, просто ни кто не хочет мне помочь.)
А вы знаете, что программ подобных этой в сети не так много. Сколько я смотрел в Интернете исходников не нашел.

nyctota 23.12.2005 17:29

Цитата:

Сообщение от MOHCTEP
Вах! Чудеса какие-то!!!!

.............................................

Второй трейс кажет, что массив забит НЕМОДИФИЦИРОВАННЫМИ данными!???!
Это как это???

Если ты потрейсишь в цикле массив "data", то увидишь, что Флэш каждую итерацию цикла заполняет этот массив (все элементы) содержимым массива "tmp", какое оно есть на момент итерации.
Почему это происходит? Похоже на то, как будто в массиве "data" хранятся ссылки на массив "tmp", а не значения...
Кто знает точно, подтвердите мысль.

Поэтому твой код можно переписать так:
Код:

var str="абвгдежзийклмнопрстуфхцчшщъыьэюя";
var data:Array=[];
var sl=str.length;
trace(str+'\t'+str.length);
init();
function init(){
var tmp:Array=str.split('');
trace("1 трейс массива");
for(var i=0;i<sl;i++){
var a=tmp.shift();
tmp.push(a);
data.push(tmp.join('').split(''));
trace(i+'\t'+data[i]);
}
trace("А вот 2 трейс готового массива!");
for(i=0;i<sl;i++){
trace(i+'\t'+data[i]);
}
}


MOHCTEP 24.12.2005 02:42

2 nyctota Спасибо, попытаю, только странно это как-то и не совсем понятно?

nyctota 24.12.2005 13:20

2 МОНСТЕР:
Ну, почему непонятно. Во многих (или всех серьезных? =/) языках программирования есть передача ссылки на объект. Ждем-с подтверждения от знающих людей о наличие такой возможности во Флэше (хотя, по-моему, это только что было доказано нами :D)

2 Bubblegum:
Тебе по идее все карты в руки даны -- дерзай!

Ieshua 24.12.2005 14:13

Тестируем этот скрипт.
Код:

var str = "абвгд";
var data:Array = [];
var sl = str.length;
trace(str+'\t'+str.length);
init();
function init() {
        var tmp:Array = str.split('');
        trace("1 трейс массива");
        for (var i = 0; i<sl; i++) {
                var a = tmp.shift();
                tmp.push(a);
                data.push(tmp+"!");
                trace(data[i]);
        }
        trace("А вот 2 трейс готового массива!");
        for (i=0; i<sl; i++) {
                trace(i+'\t'+data[i]);
        }
}

вот и ответ на ваш вопрос ;)


Код:

var str = "абвгд";
var data:Array = [];
var sl = str.length;
trace(str+'\t'+str.length);
init();
function init() {
        var tmp:Array = str.split('');
        trace("1 трейс массива");
        for (var i = 0; i<sl; i++) {
                var a = tmp.shift();
                tmp.push(a);
                trace(tmp);
                //следующая строка заполняет каждый элемент массива data содержимым tmp это будет видно в трейсе
                data.push(tmp);
                trace(data);
        }
}

Кажется ошибка работы массивов...0_0

Ieshua 24.12.2005 15:26

хм...Я так понимаю массив TMP после shift и push - приобретает некоторый вид...
И если он затем закладывается в другой массив...ээ...глюки начинаются =) весь массив таинственным образом перезаписывается...

Ieshua 24.12.2005 17:20

ИТОГ расследований ;)
Код:

arr = [];
str = [1, 2, 3];
arr.push(str);
trace(arr);  //выводит 1,2,3
str.reverse();
trace(arr);  //выводит 3,2,1

Цитата:

Похоже на то, как будто в массиве "data" хранятся ссылки на массив "tmp", а не значения...
Мысль здравая, но такой прием работает только, если с массивом проводится определенная операция(push,reverse,shift...etc).

Код:

arr = [];
str = [1, 2, 3];
arr.push(str);
trace(arr);  //выводит 1,2,3
str= [6,6,6]
trace(arr);  //выводит 1,2,3

//

MOHCTEP 25.12.2005 11:28

nyctota, Ieshua: Благодарю друзья! После столь развернутого объяснения и примеров, все стало предельно ясно! :)

MOHCTEP 25.12.2005 11:34

nyctota, Ieshua: Благодарю друзья! После столь развернутого объяснения и примеров, все стало предельно ясно! :)


Часовой пояс GMT +4, время: 04:28.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.