![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2009
Сообщений: 56
|
Всем доброго времени суток.
Помагите найти ошибку в коде, скоро с ума сойду.) public static function encode(In:String):String { if(In.length<2) return "0"; var weight:Object = new Object(); for(var i:Number=0;i<In.length;i++){ weight[In.charAt(i)]=weight[In.charAt(i)]?weight[In.charAt(i)]+1:1; } var code:Object = new Object(); for(var j:String in weight){ code[j]=new Object(); code[j]["key"]=""; code[j]["enable"]=true; code[j]["weight"]=weight[j]; } var min:Array=new Array(2); var min_ind:Array=new Array(2); var new_ind:String; do{ min_ind=["",""]; min[0]=In.length; for(j in code){ if(code[j]["enable"] && code[j]["weight"]<=min[0]){ min[1]=min[0]; min[0]=code[j]["weight"]; if(min_ind[0]!="") min_ind[1]=min_ind[0]; min_ind[0]=j; } } new_ind=""; code[min_ind[0]]["key"]="1"; code[min_ind[0]]["enable"]=false; new_ind+=min_ind[0]; code[min_ind[1]]["key"]="0"; code[min_ind[1]]["enable"]=false; new_ind+=min_ind[1]; code[new_ind]=new Object(); code[new_ind]["key"]="1"; code[new_ind]["enable"]=true; code[new_ind]["weight"]=code[min_ind[0]]["weight"]+code[min_ind[1]]["weight"]; } while(code[new_ind]["weight"]<In.length); trace(JSON.encode(code)); return ""; } Цитата:
если добавить в цикл do..while в конце trace(code[new_ind]["weight"]); то ошибка уходит Последний раз редактировалось rs7; 23.06.2009 в 16:17. |
|
|||||
|
Регистрация: Jun 2009
Сообщений: 56
|
Не знаю.
Ошибка не возникает при отладке. Flash CS4 |
|
|||||
|
похоже обращается к какой-то из ячеек массива которая не определена, но в таком коде вам долго придётся искать... trace вам в помощь... и терпения конечно
Добавлено через 2 минуты ещё не понял, зачем функцию делать возвращающей строку, если она в любом случае возвращает пустую строку? |
|
|||||
|
Регистрация: Jun 2009
Сообщений: 56
|
Нашёл ошибку. Была логическая ошибка, которая, тем не менее появлялась только иногда.
Причиной тому было то, что АС3 располагает поля объектов не в том порядке как мы их задаем, а по своему. И соответсвенно алгоритм работал по разному на разных прогонах. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:14. |
|
|
« Предыдущая тема | Следующая тема » |
|
|