Приветствую всех!
Задача, как мне кажется, простая до невозможности, но я, видимо, или переработался или не вижу очевидных вещей.
Суть следующая, есть массив строк, по нажатию на кнопку нужно выводить на экран случайную строку из этого массива.
Условие одно: чтобы одна и та же строка не выводилась дважды.
Набросал класс, в нём хранится тот самый массив и есть функция:
String StringClass::GetNextString() {
String result = "NONE";
if (LastStringCount == 0) {
return result;
}
randomSeed(analogRead(A1));
int index = random(0, LastStringCount );
result = StringList[index];
String tmp[LastStringCount -1];
int j = 0;
for(int i = 0; i < LastStringCount ; i++) {
if (i != index) {
tmp[j] = StringList[j];
Serial.println(tmp[j]);
j++;
}
}
LastStringCount--;
for(int i = 0; i < LastStringCount ; i++) {
StringList[j] = tmp[i];
}
}
return result;
}
Так вот на этапе заполнения временного массива в порт выводятся периодически просто пустые строки, периодически обрезанные, причём побайтово, то есть какие-то символы на середине оборваны.
Очень прошу совета у более опытных товарищей. Я пробовал работать с динамическим выделением памяти через new и delete, но из-за того, что всё это работает на указателях, не смог вернуть строчное значение функции.
Катастрофически сказывается нехватка опыта.