1
Programmazione (Gambas 2) / Re: Calcolatrice di Ceskho
« il: 22 Dicembre 2012, 15:26:57 »
Ciao; anche io ho usato la calcolatrice, su Ubuntu 10.10 và bene, mentre su Linux Mint 13 mi dà Sintax error alla riga
tVal.Text = Eval(operazione).
A questo punto, penso che il problema sia qualche incompatibilità con Mint o il Kernel 3.xxx.
Comunque, se può interessare, io ho risolto così:
Ho inserito due ; tra i segni di calcolo:
Poi ho sostituito Eval con Calc:
E poi ho scritto questo:
tVal.Text = Eval(operazione).
A questo punto, penso che il problema sia qualche incompatibilità con Mint o il Kernel 3.xxx.
Comunque, se può interessare, io ho risolto così:
Ho inserito due ; tra i segni di calcolo:
Codice: gambas [Seleziona]
PUBLIC SUB piu_Click()
operazione &= tVal.Text & ";+;"
'-- gestione per eventuale percentuale
percento = CFloat(tVal.Text)
last_op = 1
ugu.SetFocus
virgola = FALSE
other = TRUE
END
Poi ho sostituito Eval con Calc:
Codice: gambas [Seleziona]
PUBLIC SUB ugu_Click()
operazione &= tVal.Text
'-- mostra a schermo l'operazione effetuata
tVal.Text = Calc(operazione)
ugu.SetFocus
'-- salvo il risultato nel modulo per passarlo eventualmente ad altre parti del programma
MPassaggio.risultato = tVal.Text
'-- reinizializzo le variabili per le future operazioni
operazione = ""
virgola = FALSE
other = TRUE
END
E poi ho scritto questo:
Codice: gambas [Seleziona]
PUBLIC SUB Calc(word AS String) AS String
DIM aWord AS NEW String[]
DIM fRis AS Float
aWord = Split(word, ";")
IF aWord.Count = 3 THEN
SELECT aWord[1]
CASE "+"
fRis = CFloat(aWord[0]) + CFloat(aWord[2])
CASE "-"
fRis = CFloat(aWord[0]) - CFloat(aWord[2])
CASE "/"
fRis = CFloat(aWord[0]) / CFloat(aWord[2])
CASE "*"
fRis = CFloat(aWord[0]) * CFloat(aWord[2])
END SELECT
ELSE
fRis = aWord[0]
ENDIF
RETURN CStr(fRis)
END
A me và, però io non uso la strisciata.