Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [VB6] punto decimale o virgola

    Ciao a tutti,
    volendo creare un applicativo che prende un dato decimale da un textbox come posso essere sicuro che legga il dato corretto a seconda delle impostazioni del PC su cui gira?
    Se per esempio il dato fosse 0.5 (1/2 insomma) su un PC con impostazioni americane e separatore decimale punto me lo leggerebbe correttamente come CDBL(textbo1.text) mentre se le impostazioni fossero con virgola come separatore decimale mi sembra che lo trasformerebbe in 5 con i problemi del caso, avete qualche suggerimento per poter stare tranquillo su qualsiasi PC?
    Grazie, ciao
    uomolupo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    La CDbl( ) dovrebbe lavorare correttamente
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Originariamente inviato da oregon
    La CDbl( ) dovrebbe lavorare correttamente
    Ciao,
    non mi funziona. Sul PC con divisore decimale punto se nel textbox metto 5,5 mi legge 55 e se metto 0,6 mi legge 6.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Avevo capito che volevi qualcosa di funzionante con il simbolo corretto per le impostazioni del PC e non in ogni caso ...

    La soluzione potrebbe essere

    x = Val(Replace(text, ",", "."))
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Originariamente inviato da oregon
    Avevo capito che volevi qualcosa di funzionante con il simbolo corretto per le impostazioni del PC e non in ogni caso ...

    La soluzione potrebbe essere

    x = Val(Replace(text, ",", "."))
    Ti ringrazio,
    mi sono spiegato male in effetti, anche la soluzione che mi proponi funziona ovviamente ma non mi risolve il problema. Il fatto è che potrei non sapere a priori su quale PC giri l'eseguibile e quindi non potrei sapere se sia necessario utilizzare la sostituzione o meno. Questo problema non mi era nemmeno passato per la mente quando oggi, il programmino che usiamo è stato fatto girare su un PC con la virgola come separatore decimale e il testo "0.5" è stato preso come 5 facendo sballare tutto il resto, a me servirebbe qualcosa che, o leggesse le impostazioni internazionali del computer su cui gira, oppure funzionasse in qualsiasi caso leggendo il valore della casella testo.
    Avevo pensato a qualcosa che, andando a leggere la stringa, verificasse se questa contenesse un punto o una virgola e poi prendeva le parti precedenti al separatore, quelle successive dividendole per una potenza di dieci con esponente pari alla lunghezza della stringa dopo il separatore, così pensato funziona di sicuro ma mi pare mostruosamente macchinoso e mi domandavo se non ci fosse un sistema più semplice.
    ciao

    Uomolupo

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Puoi facilmente determinare il simbolo usato con

    codice:
        Dim s As String
        s = CStr(1 / 2)
        If InStr(s, ",") Then
            ' è la ,
        Else
            ' è il .
        End If
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Grazie,
    ci ho messo un pò a capire il tuo metodo (ahimé la testa alle volte non funziona troppo ) ma poi ho provato e funziona ottimamente.
    Grazie, ciao
    Uomolupo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.