Autore Topic: [RISOLTO] da testo a integer per operazione matematica  (Letto 341 volte)

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
[RISOLTO] da testo a integer per operazione matematica
« il: 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  ;)
« Ultima modifica: 07 Febbraio 2017, 20:59:07 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:da testo a integer per operazione matematica
« Risposta #1 il: 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.
« Ultima modifica: 09 Agosto 2020, 15:02:33 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. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:da testo a integer per operazione matematica
« Risposta #2 il: 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
« 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 ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:da testo a integer per operazione matematica
« Risposta #3 il: 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
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:da testo a integer per operazione matematica
« Risposta #4 il: 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)
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:da testo a integer per operazione matematica
« Risposta #5 il: 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.
« 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. »