Gambas-it

Gambas3 => Programmazione => Topic aperto da: ilfurlan - 07 Febbraio 2017, 18:53:32

Titolo: [RISOLTO] da testo a integer per operazione matematica
Inserito da: ilfurlan - 07 Febbraio 2017, 18:53:32
Intanto ciao a tutti... assenza forzata da tanta nanna  :sleepy: con tanta febbre  :evil:

e veniamo al dunque, sperimentando, per una TextBox ho utilizzato del codice che aveva suggerito quel genio di vuott in un vecchio post

Codice: [Seleziona]
TextBox1.Text = Format(Replace(TextBox4.Text, ",", Null) / 100, "0.00")

bene, ora con il numero che scrivo vorrei far compiere una operazione, esempio:

Codice: [Seleziona]
TextBox2.Text = (TextBox1.Text * 5)

chiaramente mi da un errore perchè i campi non sono numerici... so che la cosa più facile è renderli tali,
ma ho qualche altra possibilità?

Grazie  ;)
Titolo: Re:da testo a integer per operazione matematica
Inserito da: vuott - 07 Febbraio 2017, 19:11:07
Restando al tuo esempio riportato, l'errore viene sollevato, poiché il numero rappresentato in caratteri stringa e restituito dalla funzione nativa Format( ), contiene una virgola, preludendo così ad un valore in virgola mobile.
In tal caso devi convertire quella rappresentazione numerica da valore di tipo Stringa, restituito poi dalla Proprietà .Text dell'Oggetto TextBox1, in valore di tipo genericamente numerico in virgola mobile mediante la funzione Val( ) .

Attenzione! La conversione temporale e numerica mediante la funzione Val( ), segue le convenzioni specificate nella localizzazione. Quindi attenzione ai punti decimali, virgole, e ordine di date e ore.
Titolo: Re:da testo a integer per operazione matematica
Inserito da: vuott - 07 Febbraio 2017, 19:32:49
Se poi vuoi divertirti, puoi sempre usare addirittura la funzione esterna atof( ) della libreria condivisa .so di C:    ;D

Codice: [Seleziona]
Library "libc:6"

' double atof (const char *__nptr)
' Convert a string to a floating-point number.
Private Extern atof(__nptr As String) As Float


Public Sub Form_Open()

  TextBox1.Text = "12345.6789"

  TextBox2.Text = Format(Replace(TextBox1.Text, ",", Null) / 100, "0.00")
 
  TextBox3.Text = Str(atof(TextBox2.Text) * 5)

End
Titolo: Re:da testo a integer per operazione matematica
Inserito da: ilfurlan - 07 Febbraio 2017, 20:47:09
Se poi vuoi divertirti, puoi sempre usare addirittura la funzione esterna atof( ) della libreria condivisa .so di C:    ;D

Grazie vuott, si questa sera sono in vena di divertirmi con esperimenti
non penserai mica che mi guardo Sanremo ?  ;D
Titolo: Re:da testo a integer per operazione matematica
Inserito da: ilfurlan - 07 Febbraio 2017, 20:58:42
Restando al tuo esempio riportato, l'errore viene sollevato, poiché il numero rappresentato in caratteri stringa e restituito dalla funzione nativa Format( ), contiene una virgola, preludendo così ad un valore in virgola mobile.
In tal caso devi convertire quella rappresentazione numerica da valore di tipo Stringa, restituito poi dalla Proprietà .Text dell'Oggetto TextBox1, in valore di tipo genericamente numerico in virgola mobile mediante la funzione Val( ) .

Grande !!! funziona  :2birre:

Codice: [Seleziona]
Dim vStringa As String
TextBox1.Text = Format(Replace(TextBox1.Text, ",", Null) / 100, "0.00")
vStringa = TextBox1.Text
TextBox2.Text = (Val(vStringa) * 5)
Titolo: Re:da testo a integer per operazione matematica
Inserito da: vuott - 08 Febbraio 2017, 00:53:57
Ad ogni modo le due parentesi esterne della parte destra dell'assegnazione

 TextBox2.Text = (Val(vStringa) * 5)

sono ininfluenti, e pertanto ridondanti.