| 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].Спс, эт многое проясняет...
 |  |  |  |  |