Переход между структурами
- Войдите на сайт для отправки комментариев
Добрый день!
Есть у меня задача хранить схожие данные о нескольких условных "объектах", и выводить на экран. По кнопкам право/лево, соответсвенно, переходить к предыдущему/следующему объекту.
Сначала всё делал через двумерные массивы. Например
//Это не копипаст кода, а пример
int object = 10; //Кол-во объектов
char text[object][20] = {}; //Названия
char time[object][5] = {}; //какое-то время
// и тд
void loop{
int select = 0;
if (left) select--; //кнопка лево
if (right) select++; //кнопка право
Serial.print(text[select]); //Напечатать название
Serial.print(time[select]); //Напечатать время
}
Но в какой-то момент таких характеристик стало много, да и появилась потребность "выключать" некоторые объекты - то есть хранить флаг, и если он снят на 2-ом объекте, то после 1-го переходить сразу к 3-ему и тд.
Появилась идея использовать typedef struct, например
typedef struct {
char text[20]; //Названия
char time[5]; //какое-то время
// и тд
boolean flag;
}Strobject;
Strobject object1 = {...}; //1-й объект
Strobject object2 = {...}; //2-й объект
// и тд
void loop{
int select = 0;
if (left) select--; //кнопка лево
if (right) select++; //кнопка право
// Serial.print И вот тут проблема
}
Но как вывести информацию с нужного мне объекта (и переходить между ними), я что-то никак не пойму)
В принципе, кол-во самих объектов заранее известно. Можно дать им одинаковые название с разницей в цифре на конце.
Помогите, пожалуйста, новичку. Такое ощущение, что прям какого-то простого шага не хватает:)
Strobject menu[3] = { {...}, //1-й объект {...}, //2-й объект {...}, //3-й объект }; if ((select > 0) && left) select--; if ((select < 3) && left) select++; Serial.print(menu[select].text);sadman41, огромное спасибо, как-то я не догадался их завернуть в массив)