Go Down

Topic: Overflow di String (Read 422 times) previous topic - next topic

AnTrea

Salve

Sto realizzando un piccolo programmino che mi legga la risposta di una GET/POST
Vorrei utilizzare l'oggetto String per rendere il parsing un pò più facile e gestibile (grazie ai suoi metodi) rispetto all'array di char.

Ho scritto questa funzioncina chiamata in loop() che funziona solo al primo ciclo.
Dal secondo ciclo in poi credo che l'oggetto string vada in overflow perchè non mi stampa più nulla.
Ho come l'impressione che ogni volta che chiamo parse() mi genera un nuovo oggetto String senza cancellare l'oggetto precedente.

Come devo gestire la cosa? Puntatori? :)

Code: [Select]
void parse()

  Serial.println("Parsing");
  String meteo;
  if (client.find("ct"))
  {
    Serial.println("Meteo trovato!");   
    //meteo.replace(meteo,client.readString());
    meteo=client.readString();
    Serial.println("Avviso: ");
    Serial.println(meteo);
  }
  else
  {   
    Serial.println("Failed parsing...");
  }
}
Arduino, MODs e DIY: blackstufflabs.com

AnTrea

stranamente adesso funziona... chissà cosa avrò fatto...


eventualmente... come posso estrapolare da un oggetto stringa una sottostringa che inizia con una sottostringa1 e finisce con la sottostringa2?

Esempio:
"ciao mamma bella"

voglio "mamma" sapendo che inizia con "ciao" e finisce "bella"

non trovo il metodo adatto... consigli?
Arduino, MODs e DIY: blackstufflabs.com

AnTrea

se potessi usare il metodo find della classe stream.... sulla mia stringa sarei a cavallo...
Arduino, MODs e DIY: blackstufflabs.com

ale92

ho dato un occhiata veloce ai metodi string sulla reference e non vedo niente che ti può essere utile...
potresti fare però una altra cosa e cioè controllare char per char con 2 cicli e se trovi tutti  i char della prima stringa nella seconda hai fatto.
oppure partendo dal primo carattere crei una substring di n char e li compari alla tua parola, se la trovi esci dal ciclo se no crei un'altra substring partendo dal secondo char e cosi via finche non finisci la seconda stringa.

so che è un pò complicato ma sono i primi due metodi che mi sono venuti in mente, però mi sembra strano che non ci sia un metodo...è un pò che non programmo e non ricordo bene tutti i metodi

cyberhs

int I;
String X;
String Y;

X = "Ciao, Mamma bella!";

if (X.startsWith("Ciao") && X.endsWith("bella")) {
  I = X.indexOf("Mamma");
  if (I > 0)  {
    Y = X.substring(I, I + 5);
  }

}

Go Up