|
GM не позволяет делать разнотипные массивы?!
|
|
| [1] AGENTX001 [05 Августа 2011, 10:52] |
|
Всем доброго дня! Сегодня столкнулся с очень странной проблемой - Game Maker не может работать с массивом, в котором ячейки с разными типами данных. Я был намерен хранить инфу на серве в двумерном массиве, типо ulist[id],ulist[id,login] и т. д. Так вот, при id,login = "test", весь массив превращается в стринговый.... походу придётся переписывать сервер на хранение в нескольких массивах...Или заюзать ооп и класс юзера либо список... Ненавижу списки) Добавлено (05.08.2011, 10:52) --------------------------------------------- Да, я был прав, переписал на два массива, всё работает, только наскока это рационально - неизвестно... списки мне никогда не нраились... наверно надо будет придумать собственную систему хранения инфы... |
|
| [2] elis1112 [05 Августа 2011, 10:52] |
|
познавательно) |
|
| [3] Йакуд [05 Августа 2011, 10:58] |
AGENTX001, а в чем собственно проблема? Можно хранить весь массив в строке, а для того, чтобы узнать изначально строка это или нет можно использовать самописную простейшую функцию:
#string_is_real Code if(is_real(argument0)) return argument0; if(string_digits(argument0) == argument0) return real(argument0); return false;
Эта функция не кушает систеных ресурсов и пользоваться ей тоже можно...
И ещё.. Твои мысли на счет того, что гм не позволяет сделать значения разного типа в одном массиве, я могу опровергнуть приведенным ниже кодом. Скопируй и запусти у себя его... Code a[0] = 1; a[1] = 5; a[2] = "string"; a[3] = 100;
txt = ''; for(i = 0; i < 4; i += 1) { txt += "a["+string(i)+"] = "+string(a[i])+"; type = "; if(is_real(a[i])) txt += "real;#" else txt += "string;#" }
show_message(txt); |
|
| [4] AGENTX001 [05 Августа 2011, 11:16] |
Йакуд, странно. Действительно можно.... Но мне писал "нимагу сравнить аргументы".... в простейшем коде Code if ulist[i] != -1 { ... } Причём это происходило как только выполнялся код Code ulist[i,_login] = dll39_read_string(0)//_login это идентификатор, объявлен в криэйте |
|
| [5] Йакуд [05 Августа 2011, 11:30] |
Quote (AGENTX001) Но мне писал "нимагу сравнить аргументы".... в простейшем коде Видимо в цикле ты в каком-то месте сравниваешь строку с реальной величиной. можно сделать так: Code if(is_real(ulist[i])) if ulist[i] != -1 { ... } |
|
| [6] AGENTX001 [05 Августа 2011, 11:44] |
|
Йакуд, та не вроде, всё норм. Лана, я всёравно буду юзать несколько массивов, удобнее. |
|
| [7] Vinchensoo [05 Августа 2011, 11:59] |
AGENTX001, можно вопрос? Quote (AGENTX001) list[i] != -1 Quote (AGENTX001) ulist[i,_login] Как это понимать вообще?
Ты двумерному массиву сообщаешь один индекс? Так и надо? <_< |
|
| [8] AGENTX001 [05 Августа 2011, 12:07] |
|
Vinchensoo, i - переменная цыкла for, _login - переменная, обьявлена в create, равна 4. Добавлено (05.08.2011, 12:07) ---------------------------------------------
Quote (Vinchensoo) Ты двумерному массиву сообщаешь один индекс? Так и надо? втф, а что такого? проверял, всё работает. Я просто гдетоQuote (Йакуд) Видимо в цикле ты в каком-то месте сравниваешь строку с реальной величиной. |
|
| [9] Vinchensoo [05 Августа 2011, 12:08] |
Quote (AGENTX001) Vinchensoo, i - переменная цыкла for, _login - переменная, обьявлена в create, равна 4. Сам ты цЫкл, блин.
Вот код:
Code arr[1]=10; arr[1,5]=4; Попробуй откомпилировать его на гм.
Скажешь, что будет.
Quote (AGENTX001) втф, а что такого? проверял, всё работает. Я просто гдето В том, что ты к матрице обращаешься по индексу
Он тебе даже в идеале не может вернуть.
Ну, например, есть матрица:
Ты обращаешься к ней arr[1]. Что он тебе вернет? Всю строку?
Я, конечно, не знаю, как это обрабатывает гм, но так делать- ни разу не культурно. |
|
| [10] AGENTX001 [05 Августа 2011, 12:13] |
Quote (Vinchensoo) Сам ты цЫкл, блин. Оскорбление)) Quote (Vinchensoo) Попробуй откомпилировать его на гм. Всё пашет! Я ж говорю Quote (AGENTX001) проверял, всё работает. Если так хочешь, то и твой код запущуДобавлено (05.08.2011, 12:10) --------------------------------------------- Всё норм!! Добавлено (05.08.2011, 12:11) --------------------------------------------- Еслибы ошибка была в этом, то не пахалобы с самого начала, когда объявлял массив... Добавлено (05.08.2011, 12:13) --------------------------------------------- Vinchensoo, какая разница собственно)) Всёравно юзаю несколько массивов. хз как это скажется на производительности... |
|
| [11] Vinchensoo [05 Августа 2011, 12:31] |
Гм меня убил. Больше никогда не скажу, что он хороший
Юзай несколько массивов. |
|
| [12] AGENTX001 [05 Августа 2011, 12:51] |
Vinchensoo, Quote (Vinchensoo) Юзай несколько массивов. Ага. |
|
| [13] Dva_Kota [05 Августа 2011, 15:28] |
Если для двухмерного массива указать только один индекс, то первый индекс будет считаться равным нолю. Т.е. для двухмерного массива запись arr[1] будет идентичной записи arr[0,1].
Сообщение отредактировал Dva_Kota - Пятница, 05 Августа 2011, 15:28 |
|
| [14] froex [05 Августа 2011, 15:45] |
Quote (AGENTX001) массивом, в котором ячейки с разными типами данных По определению массив хранит только однотипные данные. Читай Вирта для начала. |
|
| [15] AGENTX001 [05 Августа 2011, 18:16] |
Quote (froex) По определению массив хранит только однотипные данные. Читай Вирта для начала. к ГМ это не относится))Добавлено (05.08.2011, 18:16) ---------------------------------------------
Quote (Dva_Kota) Если для двухмерного массива указать только один индекс, то первый индекс будет считаться равным нолю. Т.е. для двухмерного массива запись arr[1] будет идентичной записи arr[0,1]. Спс, эт многое проясняет... |
|