Ho un'eccezione numerica in release, ma funziona correttamente in debug

Guido Pedrotto 0 Punti di reputazione
2025-04-03T08:51:03.83+00:00

In questo esempio di codice, t.MemSogliaBassa è UInteger type; il suo valore è maggiore di 65535.

iCompiled.operando() è un array di ushort

Codice eseguito:

iCompiled.operando(4) = CUShort(t.MemSogliaBassa)

iCompiled.operando(5) = CUShort(t.MemSogliaBassa >> 16)

Eseguendo il codice in Debug, iCompiled.operando(4) e iCompiled.operando(5) hanno i valori attesi.

Eseguendo il codice in Release, la linea iCompiled.operando(4) = CUShort(t.MemSogliaBassa) genera eccezione numerica, mandando in crash il programma

La soluzione è stata: iCompiled.operando(4) = CUShort(t.MemSogliaBassa) => iCompiled.operando(4) = CUShort(t.MemSogliaBassa And &HFFFFUI)

Ora, se ushort genera eccezione se l'argomento non è un oggetto System.UInt16, dovrebbe farlo sia in debug che in release!!!!

Tecnologie per sviluppatori | Visual Studio | Altro
Tecnologie per sviluppatori | Visual Studio | Altro

Famiglia di suite Microsoft di strumenti di sviluppo integrato per la creazione di applicazioni per Windows, il Web, i dispositivi mobili e molte altre piattaforme. Argomenti vari che non rientrano in categorie specifiche.


Risposta

Le risposte possono essere contrassegnate come "Accettata" dall'autore della domanda e "Consigliata" dai moderatori, in modo da consentire agli utenti di sapere che la risposta ha risolto il problema dell'autore.