Ciao a tutti
Tempo fa, in questa discussione Estrarre caratteri a destra dal nome del file
eravamo giunti a questo blocco di codice, da mettere nel setup, per estrarre la versione dal nome della cartella del progetto Arduino e scriverla sul display all'accensione:
char *percorso=__FILE__; // Dalla macro __FILE__ prende il percorso del file in uso.
// Questa parte di programma, però, si trova nel file/cartella dell'IDE c_setup, in cui
// non è scritta la versione del programma. La versione è scritta nel file principale,
// che ha lo stesso nome della cartella che contiene tutti i file del programma.
// Possiamo, quindi, tornare indietro al nome della cartella nel percorso del file, prima
// dell'ultima barra rovesciata, e prendere gli ultimi caratteri del nome della cartella,
// che sono la versione del programma.
char *ver=strrchr(percorso,'\\'); // va a posizionarsi alla fine del nome della cartella
*ver=0; // Pone a zero il puntatore per indicare la fine della stringa.
ver=ver-5; // Torna indietro di 4 elementi (caratteri), all'inizio del numero della versione,
// che vogliamo estrarre. Fino alla v0.9 o v1.9 deve essere ver-4;
// dalla v0.10 deve essere ver-5.
lcd.print(ver);
In questo modo vengono presi gli ultimi 5 caratteri del nome della cartella, che contengono la versione nella forma v4.0a. Se la versione fosse v4.0, però, dovrebbe tornare indietro solo di 4 caratteri, perciò dovrei modificare il codice. Come potrei, allora, tornare indietro alla 'v' e visualizzare i caratteri da lì alla fine del nome della cartella? Ho provato facendo
char *ver=strrchr(percorso,'\\'); // va a posizionarsi alla fine del nome della cartella
*ver=0; // Pone a zero il puntatore per indicare la fine della stringa.
ver=ver-10; // Torna indietro di 10 elementi (caratteri).
ver=strrchr(ver,'v'); // Va a cercare la 'v'.
lcd.print(ver);
Parte, sì, dalla 'v', ma visualizza gli ultimi caratteri del nome del file, compreso il .ino finale, non il nome della cartella! Dove ho sbagliato?
Grazie
Gianluca
