Gambas-it

Gambas3 => Programmazione => Topic aperto da: vir1966 - 02 Giugno 2019, 19:51:38

Titolo: Cercato float ottenuto string
Inserito da: vir1966 - 02 Giugno 2019, 19:51:38
Premetto che mi ritengo un assoluto ignorante in programmazione per cui chiedo un aiuto....stò riscrivendo in Gambas un programma che avevo scritto in Vb5 e poi portato avanti con Vb6, si tratta di un applicativo per elaborare misure di serramenti in legno che ho scritto ad uso personale visto che io sono un serramentista.....tornando al punto del problema la parte ci codice in oggetto mentre in vb non da errore in Gambas mi dice Tipo non corrispondente, cercato Float ottenuto string...


Codice: [Seleziona]
Dim lucelarghezza As Variant

lucelarghezza = txtLargoTelaio.Text - (cboSezTelaio.text * 2 / 10) + 0.2 '
larghezzaanta = lucelarghezza / cboNumAnte.Text + differenza
txtLarghezzaAnta.Text = Format(larghezzaanta, "###.#")
Titolo: Re:Cercato float ottenuto string
Inserito da: vuott - 02 Giugno 2019, 20:24:18
Tre domande:

1) perché usi il tipo Variant per la variabile  lucelarghezza ? E' proprio necessario ? Se sì, perché ?

2) la variabile "larghezzaanta" che tipo è ?

3) dove ti compare l'avviso dell'errore ? Nella funzione Format( ) ?
Titolo: Re:Cercato float ottenuto string
Inserito da: vir1966 - 02 Giugno 2019, 20:42:41
intanto grazie per la risposta....si anche larghezzaanta è Variant.....in Vb era solo Dim larghezzaanta e funzionava, in Gambas non funziona e ho messo Variant solo che se txtLargoTelaio.Text e un numero intero tipo 120 non mi da errore, se è 120,5 (con la virgola) mi da errore nella riga:
lucelarghezza = txtLargoTelaio.Text - (cboSezTelaio.text * 2 / 10) + 0.2

edit:
adesso ho visto che se ometto la virgola ma metto il punto non da errore
Titolo: Re:Cercato float ottenuto string
Inserito da: vuott - 02 Giugno 2019, 20:48:11
Perché non usi un oggetto ValueBox con la sua proprietà .Value, anziché un oggetto (ossia txtLargoTelaio) che ti restituisce una Stringa ?
Titolo: Re:Cercato float ottenuto string
Inserito da: vuott - 02 Giugno 2019, 20:50:12
...insomma, ti andrebbe bene una cosa così ?

Codice: [Seleziona]
Public Sub Button1_Click()

   Dim lucelarghezza, differenza, larghezzaanta As Float

   lucelarghezza = ValueBox1.Value - (ValueBox2.Value * 2 / 10) + 0.2 '
   larghezzaanta = lucelarghezza / ValueBox3.Value + differenza
   TextBox1.Text = Format(larghezzaanta, "###.#")

End
Titolo: Re:Cercato float ottenuto string
Inserito da: vir1966 - 02 Giugno 2019, 20:59:40
...insomma, ti andrebbe bene una cosa così ?

Codice: [Seleziona]
Public Sub Button1_Click()

   Dim lucelarghezza, differenza, larghezzaanta As Float

   lucelarghezza = ValueBox1.Value - (ValueBox2.Value * 2 / 10) + 0.2 '
   larghezzaanta = lucelarghezza / ValueBox3.Value + differenza
   TextBox1.Text = Format(larghezzaanta, "###.#")



End
Quali vantaggi avrei usando Valuebox
Titolo: Re:Cercato float ottenuto string
Inserito da: vuott - 02 Giugno 2019, 21:05:16
E' un oggetto dedicato per i valori numerici.

Ad ogni modo puoi conservare il tuo codice, convertendo il valore, restituito da txtLargoTelaio.Text e da cboSezTelaio.text, mediante la funzione Val( ):

Codice: [Seleziona]
lucelarghezza = Val(txtLargoTelaio.Text) - (Val(cboSezTelaio.text) * 2 / 10) + 0.2
Titolo: Re:Cercato float ottenuto string
Inserito da: vir1966 - 02 Giugno 2019, 21:10:22
Ti ringrazio molto per l'aiuto  :ok:
Titolo: Re:Cercato float ottenuto string
Inserito da: vuott - 02 Giugno 2019, 21:13:38
Ok, però mi permetto di suggerire di cambiare quel tipo Variant (che occupa 16 byte di memoria) in un più elegante tipo Single o, se hai bisogno di maggiore precisione nella parte frazionaria, con un Float.


http://gambaswiki.org/wiki/lang/type?l=it