String + String получается пустота

asongecyt
Offline
Зарегистрирован: 14.11.2019

У меня есть некий текст

String textadd = "The foregoing is commentary for informational purposes only. All statements and expressions are the opinions of Eagle Products, LLC, or Caron Broadcasting Company. This information is not meant to be a solicitation or recommendation to buy, sell, or hold securities. We are not licensed or registered in the securities industry. The information presented herein and on the related web site has been obtained from sources believed to be reliable, but its accuracy is not guaranteed";
 
Мне надо его разбить на 94 символа 
как я пытлася
 
int lines =  (int)ceil(textadd.length()  / (count-1));
String line_new1 ,line_new2;

for (byte i = 0; i <= lines; i++){

line_new1=""; line_new2="";
line_new1 = textadd.substring( (int)(i*(count-1)) , (int)(i*(count-1)) + (count/2)); //Serial.println();
line_new2 = textadd.substring( (int)(((i*(count-1))+(count/2))) , (int)((i+1)*(count-1)) ); //Serial.println(); 
}

почему такая запутанная ситуация потому что substring работает максимум с 80 символами, и я юзал 47 символов, тоесть 47 +47 = 94

for (byte i = 0; i <= lines; i++){


line_new1=""; line_new2="";
line_new1 = textadd.substring( (int)(i*(count-1)) , (int)(i*(count-1)) + (count/2)); //Serial.println();
	line_new2 = textadd.substring( (int)(((i*(count-1))+(count/2))) , (int)((i+1)*(count-1)) ); //Serial.println();
	Serial.println(line_new1);
	Serial.println(line_new2);

	}
	

вот так выводит прекрасно но стоит мне 

line_new1 += line_new2; текст каким то образом исчезает

Мои попытки сделать в 1 строчку не получилось

_________

line_new1 += line_new2; 

___________

line_new1 += (String) line_new2; 

_________

line_new1 += String( line_new2); 

_________

char charBuf[50], charBuf2[50], buffer[100];

line_new1.toCharArray(charBuf, 50);

line_new2.toCharArray(charBuf2, 50);

sprintf(buffer, "%s%s",charBuf, charBuf2);

________

 line_new1.toCharArray(charBuf, 50);
 line_new2.toCharArray(charBuf2, 50);
_______
 
Уважаемые знатоки подскажите пожалуйста в чем моя ошибка ? заранее спасибо
asongecyt
Offline
Зарегистрирован: 14.11.2019

const byte count = 94;

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015
line_new1=""; line_new2="";

может надо выше цикла вынести?

asongecyt
Offline
Зарегистрирован: 14.11.2019

Мне надо соединить 2 строчки в 1 , это никак не влияет

Но спасибо за ответ

 

Я даже просто пробовал обьявлять переменные в цикле 

String line_new1 =  textadd.substring(1 , 47); //Serial.println();
String line_new2 =  textadd.substring( 48 , 94 ); //Serial.println();
 и соедниять строчи, тоже не работает
asongecyt
Offline
Зарегистрирован: 14.11.2019

Пример более простой

String textadd = "The foregoing is commentary for informational purposes only. All statements and expressions are the opinions of Eagle Products, LLC, or Caron Broadcasting Company. This information is not meant to be a solicitation or recommendation to buy, sell, or hold securities. We are not licensed or registered in the securities industry. The information presented herein and on the related web site has been obtained from sources believed to be reliable, but its accuracy is not guaranteed";


String line_new1 =  textadd.substring(1 , 47); //Serial.println();
String line_new2 =  textadd.substring( 48 , 94 ); //Serial.println();


line_new1 +=line_new2 ;
line_new1 пустой
xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

я что-то делаю не так ?

asongecyt
Offline
Зарегистрирован: 14.11.2019

Все так, походу у меня слишком много кода ,когда очистил и поставил только этот заработало

Спасибо

b707
Онлайн
Зарегистрирован: 26.05.2017

asongecyt пишет:

Все так, походу у меня слишком много кода ,когда очистил и поставил только этот заработало

У вас не "кода много", у вас оперативной памяти не хватает. Избавляйтесь от String, переходите на char*. Константные строки можно положить в ПРОГМЕМ

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

и еще как альтернатива, если не умеете, не понимаете как работать с "мелкими" МК, берите процы по жирнее и разворачивайте там свои String и WEB сервера, благо выбор сейчас огромен. это мы даже в ДОС-е байты считали и экономили. 

asongecyt
Offline
Зарегистрирован: 14.11.2019

Спасибо всем за помощь

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

xDriver пишет:

 это мы даже в ДОС-е байты считали и экономили. 

наконец-то встретил коллегу, кто в ДОСе писал ЕХЕ программы, мне выходить за СОМ ни разу не понадобилось )))

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

а что в COM не надо было байты считать?

как-никак, COM - 64к, а exe - 640к.

SLKH
Онлайн
Зарегистрирован: 17.08.2015

ua6em пишет:

xDriver пишет:

 это мы даже в ДОС-е байты считали и экономили. 

наконец-то встретил коллегу, кто в ДОСе писал ЕХЕ программы, мне выходить за СОМ ни разу не понадобилось )))

Я недавно в каких-то своих архивах Turbobasic обнаружил. И он на winXP запустился, без смс и регистрации.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

а что в COM не надо было байты считать?

как-никак, COM - 64к, а exe - 640к.

мне нет )))