GM не позволяет делать разнотипные массивы?!
|
|
AGENTX001 | Дата: Пятница, 05 Августа 2011, 10:52 | Сообщение # 1 |
почётный гцупер
Сейчас нет на сайте
| Всем доброго дня! Сегодня столкнулся с очень странной проблемой - Game Maker не может работать с массивом, в котором ячейки с разными типами данных. Я был намерен хранить инфу на серве в двумерном массиве, типо ulist[id],ulist[id,login] и т. д. Так вот, при id,login = "test", весь массив превращается в стринговый.... походу придётся переписывать сервер на хранение в нескольких массивах...Или заюзать ооп и класс юзера либо список... Ненавижу списки) Добавлено (05.08.2011, 10:52) --------------------------------------------- Да, я был прав, переписал на два массива, всё работает, только наскока это рационально - неизвестно... списки мне никогда не нраились... наверно надо будет придумать собственную систему хранения инфы...
|
|
| |
elis1112 | Дата: Пятница, 05 Августа 2011, 10:52 | Сообщение # 2 |
Igni et ferro
Сейчас нет на сайте
| познавательно)
|
|
| |
Йакуд | Дата: Пятница, 05 Августа 2011, 10:58 | Сообщение # 3 |
участник
Сейчас нет на сайте
| 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);
"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso .blanco 2.0
|
|
| |
AGENTX001 | Дата: Пятница, 05 Августа 2011, 11:16 | Сообщение # 4 |
почётный гцупер
Сейчас нет на сайте
| Йакуд, странно. Действительно можно.... Но мне писал "нимагу сравнить аргументы".... в простейшем коде Code if ulist[i] != -1 { ... } Причём это происходило как только выполнялся код Code ulist[i,_login] = dll39_read_string(0)//_login это идентификатор, объявлен в криэйте
|
|
| |
Йакуд | Дата: Пятница, 05 Августа 2011, 11:30 | Сообщение # 5 |
участник
Сейчас нет на сайте
| Quote (AGENTX001) Но мне писал "нимагу сравнить аргументы".... в простейшем коде Видимо в цикле ты в каком-то месте сравниваешь строку с реальной величиной. можно сделать так: Code if(is_real(ulist[i])) if ulist[i] != -1 { ... }
"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso .blanco 2.0
|
|
| |
AGENTX001 | Дата: Пятница, 05 Августа 2011, 11:44 | Сообщение # 6 |
почётный гцупер
Сейчас нет на сайте
| Йакуд, та не вроде, всё норм. Лана, я всёравно буду юзать несколько массивов, удобнее.
|
|
| |
Vinchensoo | Дата: Пятница, 05 Августа 2011, 11:59 | Сообщение # 7 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| AGENTX001, можно вопрос? Quote (AGENTX001) list[i] != -1 Quote (AGENTX001) ulist[i,_login] Как это понимать вообще?
Ты двумерному массиву сообщаешь один индекс? Так и надо? <_<
|
|
| |
AGENTX001 | Дата: Пятница, 05 Августа 2011, 12:07 | Сообщение # 8 |
почётный гцупер
Сейчас нет на сайте
| Vinchensoo, i - переменная цыкла for, _login - переменная, обьявлена в create, равна 4. Добавлено (05.08.2011, 12:07) ---------------------------------------------
Quote (Vinchensoo) Ты двумерному массиву сообщаешь один индекс? Так и надо? втф, а что такого? проверял, всё работает. Я просто гдетоQuote (Йакуд) Видимо в цикле ты в каком-то месте сравниваешь строку с реальной величиной.
|
|
| |
Vinchensoo | Дата: Пятница, 05 Августа 2011, 12:08 | Сообщение # 9 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Quote (AGENTX001) Vinchensoo, i - переменная цыкла for, _login - переменная, обьявлена в create, равна 4. Сам ты цЫкл, блин.
Вот код:
Code arr[1]=10; arr[1,5]=4; Попробуй откомпилировать его на гм.
Скажешь, что будет.
Quote (AGENTX001) втф, а что такого? проверял, всё работает. Я просто гдето В том, что ты к матрице обращаешься по индексу
Он тебе даже в идеале не может вернуть.
Ну, например, есть матрица:
Ты обращаешься к ней arr[1]. Что он тебе вернет? Всю строку?
Я, конечно, не знаю, как это обрабатывает гм, но так делать- ни разу не культурно.
|
|
| |
AGENTX001 | Дата: Пятница, 05 Августа 2011, 12:13 | Сообщение # 10 |
почётный гцупер
Сейчас нет на сайте
| Quote (Vinchensoo) Сам ты цЫкл, блин. Оскорбление)) Quote (Vinchensoo) Попробуй откомпилировать его на гм. Всё пашет! Я ж говорю Quote (AGENTX001) проверял, всё работает. Если так хочешь, то и твой код запущуДобавлено (05.08.2011, 12:10) --------------------------------------------- Всё норм!! Добавлено (05.08.2011, 12:11) --------------------------------------------- Еслибы ошибка была в этом, то не пахалобы с самого начала, когда объявлял массив... Добавлено (05.08.2011, 12:13) --------------------------------------------- Vinchensoo, какая разница собственно)) Всёравно юзаю несколько массивов. хз как это скажется на производительности...
|
|
| |
Vinchensoo | Дата: Пятница, 05 Августа 2011, 12:31 | Сообщение # 11 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Гм меня убил. Больше никогда не скажу, что он хороший
Юзай несколько массивов.
|
|
| |
AGENTX001 | Дата: Пятница, 05 Августа 2011, 12:51 | Сообщение # 12 |
почётный гцупер
Сейчас нет на сайте
| Vinchensoo, Quote (Vinchensoo) Юзай несколько массивов. Ага.
|
|
| |
Dva_Kota | Дата: Пятница, 05 Августа 2011, 15:28 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| Если для двухмерного массива указать только один индекс, то первый индекс будет считаться равным нолю. Т.е. для двухмерного массива запись arr[1] будет идентичной записи arr[0,1].
Новый пример инвентаря! /20.06.2012/
Energy Wars
Сообщение отредактировал Dva_Kota - Пятница, 05 Августа 2011, 15:28 |
|
| |
froex | Дата: Пятница, 05 Августа 2011, 15:45 | Сообщение # 14 |
Руководитель Froexilize team
Сейчас нет на сайте
| Quote (AGENTX001) массивом, в котором ячейки с разными типами данных По определению массив хранит только однотипные данные. Читай Вирта для начала.
Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее. Алгоритмы, программирование, оптимизация, тестирование, ведение проектов. Ищу художника, дизайнера, тестера, программистов С и С++ Обучаю процессам разработки и программированию.
|
|
| |
AGENTX001 | Дата: Пятница, 05 Августа 2011, 18:16 | Сообщение # 15 |
почётный гцупер
Сейчас нет на сайте
| Quote (froex) По определению массив хранит только однотипные данные. Читай Вирта для начала. к ГМ это не относится))Добавлено (05.08.2011, 18:16) ---------------------------------------------
Quote (Dva_Kota) Если для двухмерного массива указать только один индекс, то первый индекс будет считаться равным нолю. Т.е. для двухмерного массива запись arr[1] будет идентичной записи arr[0,1]. Спс, эт многое проясняет...
|
|
| |