Matt44 Add-on Developer
Numero di messaggi : 1226 Età : 46 Località : Bergamo Data d'iscrizione : 13.04.11
| Titolo: [C++] Load & Save State - problemi di gestione Gio 14 Feb 2013 - 20:17 | |
| Nuovo problemino, ho recuperato il codice che gestisce il salvataggio e il recupero dei dati del mezzo, e scopiazzando dal Delta Glider ho fatto una piccola prova per vedere se funzionava. Ovviamente non ha funzionato sennò non sarei qui sotto metto il codice... - Codice:
-
void Locatelli::clbkLoadStateEx(FILEHANDLE scn, void *vs) { char *line; while (oapiReadScenario_nextline (scn, line)) { if(!_strnicmp(line, "ANT_ACT", 4)) { sscanf(line+4, "%lf", &Ant_proc); } else ParseScenarioLineEx(line, vs); } }
void Locatelli::clbkSaveState(FILEHANDLE scn) { VESSEL3::clbkSaveState(scn); char cbuf[256];
sprintf (cbuf, "%lf", Ant_proc); oapiWriteScenario_string(scn, "ANT_ACT", cbuf); //oapiWriteScenario_float(scn, "ANT_ACT", Ant_proc); }
Io devo salvare nello scenario il valore di "Ant_Proc" che contiene la posizione dell'animazione delle antenne. Il valore viene salvato nello scenario, ma non viene più recuperato. Ant_Proc e questa: double Ant_proc. Ipotizzo sia una scemata che mi sono perso, ma non riesco a farmi un'idea di dove possa essere il problema. | |
|
fred18 Add-on Developer
Numero di messaggi : 950 Età : 41 Località : La Spezia Data d'iscrizione : 04.01.12
| Titolo: Re: [C++] Load & Save State - problemi di gestione Gio 14 Feb 2013 - 23:58 | |
| cosi al volo la riga
sscanf(line+4, "%lf", &Ant_proc);
dovrebbe essere +8 non +4, o sbaglio?
ciaoooo | |
|
Matt44 Add-on Developer
Numero di messaggi : 1226 Età : 46 Località : Bergamo Data d'iscrizione : 13.04.11
| Titolo: Re: [C++] Load & Save State - problemi di gestione Ven 15 Feb 2013 - 10:07 | |
| Non hai tutti i torti, ma non cambia niente. | |
|
Matt44 Add-on Developer
Numero di messaggi : 1226 Età : 46 Località : Bergamo Data d'iscrizione : 13.04.11
| Titolo: Re: [C++] Load & Save State - problemi di gestione Ven 15 Feb 2013 - 10:49 | |
| La risposta arriva indirettamente da MarcoGavazzeni su OF Anche lui aveva avuto il mio stesso problema, la spiegazione è la seguente (Sarà utile anche per i nuovi sviluppatori): Nel codice seguente i numeri in rosso indicano al programma dove iniziare a leggere il valore numerico saltando fisicamente la parola "ANT_ACT". In parole semplici c'è scritto salta 7 caratteri e comincia a leggere quello che c'è scritto per 8. - Codice:
-
void Locatelli::clbkLoadStateEx(FILEHANDLE scn, void *vs) { char *line; while (oapiReadScenario_nextline (scn, line)) { if(!_strnicmp(line, "ANT_ACT", 8)) { sscanf([b][color=red]line+7[/color][/b], "%lf", &Ant_proc); } else ParseScenarioLineEx(line, vs); } }
Ora il codice funziona e le antennine restano parte al riavvio della simulazione. | |
|
fred18 Add-on Developer
Numero di messaggi : 950 Età : 41 Località : La Spezia Data d'iscrizione : 04.01.12
| Titolo: Re: [C++] Load & Save State - problemi di gestione Ven 15 Feb 2013 - 11:02 | |
| corretto! ieri sera ho scritto di corsa e con poca attenzione, comunque il nocciolo è contare i caratteri (era +7 e non +8 perché avevo letto con poca attenzione e credevo che il nome della variabile e l'item nel file scenario fossero entrambi ANT_PROC). sorry per la scarsa precisione | |
|
Matt44 Add-on Developer
Numero di messaggi : 1226 Età : 46 Località : Bergamo Data d'iscrizione : 13.04.11
| Titolo: Re: [C++] Load & Save State - problemi di gestione Ven 15 Feb 2013 - 11:08 | |
| Non c'è problema, questo ti rende umano | |
|
Contenuto sponsorizzato
| Titolo: Re: [C++] Load & Save State - problemi di gestione | |
| |
|