Autore Topic: Cercato float ottenuto string  (Letto 1058 volte)

Offline vir1966

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Cercato float ottenuto string
« il: 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, "###.#")
« Ultima modifica: 05 Giugno 2019, 14:20:31 da Gianluigi »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercato float ottenuto string
« Risposta #1 il: 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( ) ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vir1966

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Re:Cercato float ottenuto string
« Risposta #2 il: 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
« Ultima modifica: 02 Giugno 2019, 20:46:00 da vir1966 »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercato float ottenuto string
« Risposta #3 il: 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 ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercato float ottenuto string
« Risposta #4 il: 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
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vir1966

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Re:Cercato float ottenuto string
« Risposta #5 il: 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

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercato float ottenuto string
« Risposta #6 il: 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
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vir1966

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Re:Cercato float ottenuto string
« Risposta #7 il: 02 Giugno 2019, 21:10:22 »
Ti ringrazio molto per l'aiuto  :ok:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercato float ottenuto string
« Risposta #8 il: 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
« Ultima modifica: 02 Giugno 2019, 21:20:51 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »