DioD
offline
Опыт:
45,184Активность: |
Баг в массивах
Истиный размер массива 8191 так что будьте осторожны. |
23.08.2006, 11:40 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
вообщето 8192, ты не учел "0", так что все норм Отредактировано Jon, 23.08.2006 в 12:20. |
23.08.2006, 12:13 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
Лол, я как раз то учёл, а вот близы нет. |
23.08.2006, 13:03 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Размер массива 0..8191, то бишь 8192, а - 8191 последний индекс... DioD, или это не так?
|
23.08.2006, 13:27 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
8191 Это последний рабочий индекс в массиве.
тоесть надо писать exitwhen 8191 Так как в этом случаем последний слот будет 8190 а первый 0 всего 8191
если указать 8192 игра вылетит при загрузке , это истиная проблема кастер системы Вексориана. |
23.08.2006, 14:10 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
remal
нечто
offline
Опыт:
2,087Активность: |
DioD, размер массива - 8192. ты это сам подтвердил:
Цитата:
|
|
23.08.2006, 22:17 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ArchWorm
Матрица незалежности
offline
Опыт:
4,675Активность: |
Так. Давайте расставим точки над i: Начинается массив с 0 Заканчивается на 8191 Его суммарный размер - 8192 Так? |
24.08.2006, 17:03 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
я говорю о том что нельзя использовать 8192 слот, так как он не существует. |
24.08.2006, 17:18 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Всего элементов 8192. Массив начинается с нуля значит последний возможный индекс 8191. Как можно в здравом уме использовать 8192?
exploder добавил: Рад что баг в КС все таки был найден. |
25.08.2006, 12:08 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
Угу, вексориан просто не обратил на это внимание. |
25.08.2006, 12:25 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
53,013Активность: |
DioD Блин давай ссылки тогда уже =) а то тупо мы стаём инкубаторами !
да Близзы идиоты что еще сказать =) |
25.08.2006, 18:31 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
Эх, тот кто знает что ищет придёт на кампы сам и ссылка ему не нужна. |
25.08.2006, 18:52 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
B100D E1F
Scarecrow
offline
Опыт:
4,869Активность: |
Близы не идеоты ибо сделали аффигеную игру с огромными возможностями модмейкинга. Ьак что риспект им за это и йащик пыва! |
25.08.2006, 18:55 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
53,013Активность: |
B100D E1F - да но когда тебе начинаю в реализации чего то идиотские вещи ты так не думаешь =)
|
25.08.2006, 19:00 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ArchWorm
Матрица незалежности
offline
Опыт:
4,675Активность: |
Жабомент, это уже позиция программера. |
25.08.2006, 23:06 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Daniil
offline
Опыт:
164Активность: |
На самом деле массивы в JASS'е могут быть разряжёнными.
То есть не обязательно записывать элементы подряд в 0, 1, 2 и т.д. Можно записать в 0, потом сразу в 100, потом в 1000 и т.д. А взять и сразу записать в 8192-й или даже в 10000-й.
Максимальный индекс в массиве - 2^31-1 (то есть более двух миллиардов). Но одновременно в массиве может быть не более 8192 записей (а может и 8191, это надо уже экспериментально проверять). |
20.09.2006, 15:18 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
53,013Активность: |
Daniil ты просто жопоумный =) в джассе размер массива равен 8192 НО ! если записать что то в слот с номером 8191 то такая карта уже не загрузитьса (после того как она была сохранена)
|
20.09.2006, 15:25 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Daniil
offline
Опыт:
164Активность: |
А давай будем взаимовежливы, ок?
Сделал тестик. Действительно, оказалось что в той доке, в которой я читал про разрежённые массивы, наврали. НО! Никаких вылетов не заметил. Просто числа (я тестил integer array), записанные в элементы от 8192 и выше не сохранялись. То есть call DisplayTextToForce(bj_FORCE_ALL_PLAYERS,I2S(I2S(udg_test[10000])) всегда выводит ноль, независимо от того, что я в этот элемент присвоил. И эта петрушка начинается с индекса 8192. Индекс 8191 работает прекрасно. И никаких вылетов не было, карта прекрасно загружается и работает. Daniil добавил: Вот карта для демонстрации. Подерживает две команды: set <индекс> <значение> и get <индекс> В начале значения всех элементов массива равны индексу. Ну вот и пробуйте get 8191 set 8191 100 get 8191 set 8192 200 get 8192 Потом можете попробывать и более крутое: set -1 100 get -1 Не знаю, что у вас будет, но у меня просто элементы с индексами меньше нулю и больше 8191 всегда равны нулю. |
20.09.2006, 17:11 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
remal
нечто
offline
Опыт:
2,087Активность: |
Daniil, ты слышишь звон и не знаешь где он... массивы в jass к разряжённым отношения могут и не иметь.
а про тест... дык оно очевидно... |
21.09.2006, 03:11 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Цитата:
Daniil, перечиай внимательно пост Toadcop'а... Игра вылетает если загрузить сохранненую игру, перед этим забив например 10000ую ячейку... Твоя карта при этом красиво выбрасывает варик на рабочий стол с фатальной ошибкой... эх... как же ты как ее проверял-то? |
|
21.09.2006, 10:16 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|