Sono incappato in un messaggio di errore come quello riportato: la linea del codice cpp differente (7978), LogicLab Rel 5.0 versione 3.0.0.0 build 17/09/2018 5.8.0.17. Controllando con Toolly i logs ho notato un warning che non riesco a risolvere. La stringa di Toolly è la seguente:
[W] SFW198 [data/ora] 6000, User program error: 9932200
Ho individuato il programma che lo genera: esegue una richiesta HTTP di tipo POST. Se commento la parte in cui uso le SysLWVarsnprintf il warning sparisce. Quello che non capisco è perché salta fuori: la stringa su cui scrivo è definita di lunghezza 255. Ci scrivo dentro massimo 100 caratteri con comando del tipo:
i:=Sysmemset(ADR(richiesta),0,SIZEOF(richiesta));
i:=SysVarsnprintf(ADR(richiesta),SIZEOF(richiesta),’dato1=%4.2f’,REAL_TYPE,ADR(rDato1));i:=SysLWVarsnprintf(ADR(richiesta),SIZEOF(richiesta),’dato2=%4.2f’,REAL_TYPE,ADR(rDato2));
Ho provato a mettere la dimensione della variabile “richiesta” invece della funziona SIZEOF ma non cambia nulla. Ho provato a commentare la linea con Sysmemset (che è superflua usando come prima funzione SysVarsnprintf) e non cambia nulla: c’è sempre quel warning.
Avevo appena modificato la lunghezza di alcune stringhe da 256 a 512 e da 512 a 1024. Adesso nel dubbio ho impostato tutte le stringhe come potenza di 2 meno 1, quindi 63, 257, 1023, 511 e via dicendo (anche se è stato sufficiente impostare quella più lunga a 1023 per far scomparire il messaggio in compilazione).
Mi conferma che anche l’errore che ho avuto io può esser dovuto alle stringhe, oppure devo cercare l’errore altrove? (un’indicazione in che direzione cercare sarebbe graditissima)