Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
In questo progetto un valutatore di espressione matematica scritto in C#.
Il codice non è un buon esempio di programmazione, non vengono usate le peculiarità OOP, me ne scuso è colpa del mio retaggio procedurale.
Restando confinati negli operatori supportati, l'affidabilità del risultato del mio codice è paragonabile a quella del parser contenuto nel Framework scritto dai programmatori Microsoft.
Ho provato altri parser scritti in modo molto più "elegante", ma poi falliscono nel risultato, se devono processare espressioni con combinazioni "particolari".
Il progetto è aperto, aiuti per renderlo OOP sarebbero graditi.
http://www.pierotofy.it/pages/sorgenti/dettagli/19622-Pars ...
Ultima modifica effettuata da Carlo il 21/10/2020 alle 13:06
in programmazione tutto è permesso |
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
non sò te ma ho diversi errori
Error 12 The name 'ris' does not exist in the current context ValutazioneEspressione.cs 125 57 ParserEspressioneMatematica
|
Error 5 The name 'contr' does not exist in the current context ValutazioneEspressione.cs 103 61 ParserEspressioneMatematica
|
Error 2 The best overloaded method match for 'double.TryParse(string, out double)' has some invalid arguments ValutazioneEspressione.cs 103 21 ParserEspressioneMatematica
|
Error 4 Only assignment, call, increment, decrement, and new object expressions can be used as a statement ValutazioneEspressione.cs 103 61 ParserEspressioneMatematica
|
ed altri ancora.
|
|
Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
Wow non me lo aspettavo uso VS2017, su win7 e su win10, a 32 e a 64 bit, nessun errore. L'exe funziona?
EDIT:
Provato su VS2012 ho i tuoi stessi errori perché VS2012 non supporta le dichiarazioni inline
Nelle righe 125 e 103, ho dichiarato inline le variabili ris e contr, ho corretto il codice togliendo le dichiarazioni inline che VS2017 propone come suggerimento...
Aggiornato progetto funzionante anche con VS2012.
http://www.pierotofy.it/pages/projects/files.php?id=700
Ultima modifica effettuata da Carlo il 26/10/2020 alle 18:33
in programmazione tutto è permesso |
|
Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
caricata Ver 2.1. Progetto completo di esempio: http://www.pierotofy.it/pages/projects/files.php?id=700
Sostituita funzione con Classe ClassParser:
//************************** PROPRIETA' ESPOSTE *************************
//* Decimali [String] es. "0.000000" (=6 decimali)
//* CulturaInfo [string] (restituisce l'interpretazione dei . e , decimali)
//* Progressione [List<string>] (progresso, cancellare prima di usare ParseEspressione)
//*********************************************************************
//*************************** METODI ESPOSTI ***************************
//* ClassParser
//* Tokenizza [String] (tokenizza l'espressione per la valutazione da ParseEspressione)
//* DeTokenizza [String] (detokenizza l'espressione)
//* ParseEspressione [String] (valuta un'espressione matematica tokenizzata)
//* AggiustaSegni [String] (valuta segni accoppiati, non serve al di fuori della classe)
//*********************************************************************
Ultima modifica effettuata da Carlo il 30/10/2020 alle 16:58
in programmazione tutto è permesso |
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
ah ecco.
Lo dico perché l'ho testato mentre ero al lavoro durante lo spacco e li abbiamo ancora Windows XP per diverse ragioni di compatibilità tra macchine e sistemi.
Anche se è sempre utile aggiornarsi conviene anche avere un piccolo riguardo di retro compatibilità.
Cmq ben fatto carlo
|
|