n° 219
Novembre 2017
Dicembre 17, 2017, 11:57:36 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Comportamento anomalo Csng  (Letto 1895 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Mircosoft
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 70


Mostra profilo
« inserita:: Ottobre 24, 2016, 10:36:39 »

Salve

Mi e' capitato un comportamento anomalo della funzione di conversione Csng

Dopo un anno che un programma funzionava regolarmente con questo codice:

Codice:
Dim miaStringa as String
Dim mioSingle as Single

miaStringa = "12.54"
mioSingle = Csng(miaStringa)

ha iniziato a sollevarmi un RunTime Error 13 - Type mismatch
(a seguto del cambio del layout della tastiera???)

Per evitare l'errore sono stato costretto a modificare il codice nel seguente modo:

Codice:
Dim miaStringa as String
Dim mioSingle as Single

miaStringa = "12.54"
mioSingle = Csng(Val(miaStringa))

Sinceramente non ho capito cosa sia cambiato...
Avete idee???
Registrato
paooolino
Full Member
***

Karma: +16/-10
Scollegato Scollegato

Messaggi: 380

Ideas in programming


Mostra profilo WWW
« Risposta #1 inserita:: Ottobre 24, 2016, 10:41:52 »

il separatore dei decimali... è diverso tra le due lingue

EN usa il punto
IT usa la virgola

Registrato

oregon
Jr. Member
**

Karma: +22/-6
Scollegato Scollegato

Messaggi: 239


Mostra profilo
« Risposta #2 inserita:: Ottobre 24, 2016, 11:03:49 »

Non è il layout della tastiera ma le "impostazioni internazionali" ciò che hai cambiato.

Non è un comportamento anomalo della CSng.
Registrato
Mircosoft
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 70


Mostra profilo
« Risposta #3 inserita:: Ottobre 24, 2016, 11:14:18 »

Lo sospettavo ma in realtà in inglese
passando questo codice lo riconosce sempre
Codice:
Public Function SubStituteString(Source As String, Destination As String, Target As String) As String
  Dim pos As Long
  Dim FirstString As String
  Dim LastString As String
 
  If Destination <> Target Then
    Do
        pos = InStr(1, Source, Target)
        If pos > 0 Then
            FirstString = Mid$(Source, 1, pos - 1)
            LastString = Mid$(Source, pos + Len(Target))
            Source = FirstString + Destination + LastString
        End If
    Loop Until pos = 0
  End If
  SubStituteString = Source
End Function

Dim miaStringa As String
Dim mioSingle As Single
 
miaStringa = "12.54"
mioSingle = CSng((SubStituteString(miaStringa, ".", ",")))
miaStringa = "24,68"
mioSingle = CSng((SubStituteString(miaStringa, ".", ",")))
miaStringa = "12"
mioSingle = CSng((SubStituteString(miaStringa, ".", ",")))
miaStringa = "0.54"
mioSingle = CSng((SubStituteString(miaStringa, ".", ",")))
miaStringa = "0,68"
mioSingle = CSng((SubStituteString(miaStringa, ".", ",")))


Anche se manualmente vado a cambiare il separatore dei decimali
Registrato
oregon
Jr. Member
**

Karma: +22/-6
Scollegato Scollegato

Messaggi: 239


Mostra profilo
« Risposta #4 inserita:: Ottobre 24, 2016, 11:16:10 »

E a che ti serve questa funzione?
Registrato
Mircosoft
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 70


Mostra profilo
« Risposta #5 inserita:: Ottobre 24, 2016, 11:19:08 »

La funzione e' utilizata dal programma (che non ho fatto io) per formattare correttamente un dato relativo ad un peso letto da un file ini prima di passarlo al programma...
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines