| |
Consulter les messages sans réponse | Consulter les sujets actifs
|
Page 1 sur 1
|
[ 11 message(s) ] |
|
| Auteur |
Message |
|
the_connected
|
Publié: 05 Mars 2005, 11:49 |
|
Inscription : 26 Fév 2003, 12:18 Message(s) : 443
|
|
Je suis sur un petit projet personnel et je demande à l'utilisateur de rentrer un nombre avec une virgule. Par contre j'aimerais que l'utilisateur puisse utiliser le . ou la , sans problème. J'ai pensé à faire un replace des . en , mais sa ne fonctionnera que sur une machine configurer pour utilisé la ,
J'aimerais pouvoir savoir qu'elle est le signe par défaut du system afin de convertir comme il faut.
P.S. Mon projet est en VB.Net avec les Windows Forms.
_________________ Asus A7N8X Deluxe v2.0 | Athlon XP Barton 2500+@3200+ | 1024mo DDR 3200 | BFG Geforce 6600GT 128mo | Western Digital 160go 7200rpm | Maxtor 40go 7200rpm | Altec Lansing ATP4 | Samsung SyncMaster 763MB | Fan CoolerMaster Aero 7+ | Sennheiser HD212 Pro
|
|
| Haut |
|
 |
|
Procyon
|
Publié: 05 Mars 2005, 12:10 |
|
Inscription : 07 Jan 2002, 15:10 Message(s) : 3551 Localisation : Beauport, Québec
|
|
_________________ Procyon,
Modérateur de la section Trouvailles
|
|
| Haut |
|
 |
|
the_connected
|
Publié: 05 Mars 2005, 12:33 |
|
Inscription : 26 Fév 2003, 12:18 Message(s) : 443
|
|
Oui je sais comment remplacer un point par une virgule mais ce que je veut faire c'est détecter si je doit avoir une virgule ou un point puisque la valeur du textbox je la transforme ensuite en decimal .net mais ce format prend la valeur selon la config du system. Par exemple un system anglais prendra le point comme séparation des decimal alors qu'un system francophone prendra la virgule.
_________________ Asus A7N8X Deluxe v2.0 | Athlon XP Barton 2500+@3200+ | 1024mo DDR 3200 | BFG Geforce 6600GT 128mo | Western Digital 160go 7200rpm | Maxtor 40go 7200rpm | Altec Lansing ATP4 | Samsung SyncMaster 763MB | Fan CoolerMaster Aero 7+ | Sennheiser HD212 Pro
|
|
| Haut |
|
 |
|
End-i
|
Publié: 05 Mars 2005, 13:13 |
|
Inscription : 27 Juin 2002, 01:12 Message(s) : 458 Localisation : Québec
|
|
Je connais seulement VB6 (pas .NET) mais j'utilise une fonction appellée "isnumeric()"
Donc, si la valeur n'est pas numérique, on vérifie s'il y a une virgule ou un point dans la zone de texte et on la remplace.
|
|
| Haut |
|
 |
|
Procyon
|
Publié: 05 Mars 2005, 14:00 |
|
Inscription : 07 Jan 2002, 15:10 Message(s) : 3551 Localisation : Beauport, Québec
|
the_connected a écrit: Oui je sais comment remplacer un point par une virgule mais ce que je veut faire c'est détecter si je doit avoir une virgule ou un point puisque la valeur du textbox je la transforme ensuite en decimal .net mais ce format prend la valeur selon la config du system. Par exemple un system anglais prendra le point comme séparation des decimal alors qu'un system francophone prendra la virgule.
Mon code fait exactement et précisément ce que tu mentionne.
Mon code ne remplace pas juste une virgule par le point ou l'inverse, mon code remplace les virgules ET les points par le caractère qui est défini dans les paramètres du système.
_________________ Procyon,
Modérateur de la section Trouvailles
|
|
| Haut |
|
 |
|
the_connected
|
Publié: 05 Mars 2005, 18:08 |
|
Inscription : 26 Fév 2003, 12:18 Message(s) : 443
|
Procyon a écrit: the_connected a écrit: Oui je sais comment remplacer un point par une virgule mais ce que je veut faire c'est détecter si je doit avoir une virgule ou un point puisque la valeur du textbox je la transforme ensuite en decimal .net mais ce format prend la valeur selon la config du system. Par exemple un system anglais prendra le point comme séparation des decimal alors qu'un system francophone prendra la virgule. Mon code fait exactement et précisément ce que tu mentionne. Mon code ne remplace pas juste une virgule par le point ou l'inverse, mon code remplace les virgules ET les points par le caractère qui est défini dans les paramètres du système.
Merci je vais essayer de convertir ça en vb quand j'aurait le temps et je vais tester.
_________________ Asus A7N8X Deluxe v2.0 | Athlon XP Barton 2500+@3200+ | 1024mo DDR 3200 | BFG Geforce 6600GT 128mo | Western Digital 160go 7200rpm | Maxtor 40go 7200rpm | Altec Lansing ATP4 | Samsung SyncMaster 763MB | Fan CoolerMaster Aero 7+ | Sennheiser HD212 Pro
|
|
| Haut |
|
 |
|
ASP Kid
|
Publié: 05 Mars 2005, 20:18 |
|
Inscription : 06 Fév 2002, 22:42 Message(s) : 185 Localisation : Québec
|
En VB6 tu peux appeller l'API pour connaître les régionals settings.
Code : ' /=======================================\ ' | MODULE: modRegionalSettings ' | CREATED: 2004-05-11 13:09:03 ' | COPYRIGHT: Copyright ©1996-2002 VBnet, Randy Birch, All Rights Reserved. ' | Terms of use http://www.mvps.org/vbnet/terms/pages/terms.htm ' :---------------------------------------: ' | DESCRIPTION: ' | ' | Ce module permet d'aller chercher les ' | paramètres du "regional settings". ' | ' \=======================================/
Option Explicit '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Copyright ©1996-2001 VBnet, Randy Birch, All Rights Reserved. ' Some pages may also contain other copyrights by the author. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' You are free to use this code within your own applications, ' but you are expressly forbidden from selling or otherwise ' distributing this source code without prior written consent. ' This includes both posting free demo projects made from this ' code as well as reproducing the code in text or html format. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Enum eLOCALE LOCALE_SDECIMAL = &HE 'decimal separator LOCALE_STHOUSAND = &HF 'thousand separator LOCALE_SGROUPING = &H10 'digit grouping LOCALE_IDIGITS = &H11 'number of fractional digits LOCALE_ILZERO = &H12 'leading zeros for decimal LOCALE_INEGNUMBER = &H1010 'negative number mode LOCALE_SNATIVEDIGITS = &H13 'native ASCII 0-9 LOCALE_SPOSITIVESIGN = &H50 'positive sign LOCALE_SNEGATIVESIGN = &H51 'negative sign LOCALE_ILANGUAGE = &H1 'language id LOCALE_SLANGUAGE = &H2 'localized name of lang LOCALE_SENGLANGUAGE = &H1001 'English name of lang LOCALE_SABBREVLANGNAME = &H3 'abbreviated lang name LOCALE_SNATIVELANGNAME = &H4 'native name of lang LOCALE_ICOUNTRY = &H5 'country code LOCALE_SCOUNTRY = &H6 'localized name of country LOCALE_SENGCOUNTRY = &H1002 'English name of country LOCALE_SABBREVCTRYNAME = &H7 'abbreviated country name LOCALE_SNATIVECTRYNAME = &H8 'native name of country LOCALE_SINTLSYMBOL = &H15 'intl monetary symbol LOCALE_IDEFAULTLANGUAGE = &H9 'def language id LOCALE_IDEFAULTCOUNTRY = &HA 'def country code LOCALE_IDEFAULTCODEPAGE = &HB 'def oem code page LOCALE_IDEFAULTANSICODEPAGE = &H1004 'def ansi code page LOCALE_IDEFAULTMACCODEPAGE = &H1011 'def mac code page
LOCALE_IMEASURE = &HD '0 = metric, 1 = US
'#if(WINVER >= &H0400) LOCALE_SISO639LANGNAME = &H59 'ISO abbreviated language name LOCALE_SISO3166CTRYNAME = &H5A 'ISO abbreviated country name '#endif /* WINVER >= &H0400 */
'#if(WINVER >= &H0500) LOCALE_SNATIVECURRNAME = &H1008 'native name of currency LOCALE_IDEFAULTEBCDICCODEPAGE = &H1012 'default ebcdic code page LOCALE_SSORTNAME = &H1013 'sort name
End Enum
Public Declare Function GetThreadLocale Lib "kernel32" () As Long
Public Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Public Declare Function GetLocaleInfo Lib "kernel32" _ Alias "GetLocaleInfoA" _ (ByVal Locale As Long, _ ByVal LCType As Long, _ ByVal lpLCData As String, _ ByVal cchData As Long) As Long Public Function GetUserLocaleInfo(ByVal dwLCType As eLOCALE) As String
Dim sReturn As String Dim r As Long Static LCID As Long If LCID = 0 Then LCID = GetUserDefaultLCID() End If 'call the function passing the Locale type 'variable to retrieve the required size of 'the string buffer needed r = GetLocaleInfo(LCID, dwLCType, sReturn, Len(sReturn)) 'if successful.. If r Then 'pad the buffer with spaces sReturn = Space$(r) 'and call again passing the buffer r = GetLocaleInfo(LCID, dwLCType, sReturn, Len(sReturn)) 'if successful (r > 0) If r Then 'r holds the size of the string 'including the terminating null GetUserLocaleInfo = Left$(sReturn, r - 1) End If End If End Function
Fouille un peu, peut-être qu'il y a l'équivalent en dot NET.
_________________ HTH
 This posting is provided "AS IS" with no warranties, and confers no rights cr*sse!
|
|
| Haut |
|
 |
|
Procyon
|
Publié: 05 Mars 2005, 21:30 |
|
Inscription : 07 Jan 2002, 15:10 Message(s) : 3551 Localisation : Beauport, Québec
|
the_connected a écrit: Merci je vais essayer de convertir ça en vb quand j'aurait le temps et je vais tester.
Huh? C'est déjà en VB.
Y'a-t-il un problème? On dirait que tu n'a même pas lu mes 3 lignes de codes et que tu essayes de croire que mon code ne fera pas ce que tu désires. Mon code intégral fait parfaitement ce que tu veux en VB.NET, je trouve tes réactions vraiment bizarres. Anyway... à moins que ça ne fasse pas vraiment ce que tu désires, alors là vaudrait mieux le dire directement, ça éviterais la confusion.
Ouvre VB.NET et crée un projet Windows Application, met 2 textbox dans une Windows Form que tu appelles TextBox1 et TextBox2 et un bouton. Dans le onclick du bouton, écris ceci intégralement (remarque que c'est intégralement identique à ce que je t'ai donné plus tôt sauf le nom des variables et les déclarations):
Code : Dim nbdec As Integer, NombreCorrige As Double nbdec = Len(TextBox1.Text) - (InStr(TextBox1.Text, ".") + InStr(TextBox1.Text, ",")) NombreCorrige = CDbl(Replace(Replace(TextBox1.Text, ".", ""), ",", "")) / (10 ^ nbdec) TextBox2.Text = CStr(NombreCorrige)
et écris 2.55 ou 2,55 et clique sur le bouton, ça va convertir le tout selon tes paramètres régionaux.
_________________ Procyon,
Modérateur de la section Trouvailles
|
|
| Haut |
|
 |
|
the_connected
|
Publié: 06 Mars 2005, 00:03 |
|
Inscription : 26 Fév 2003, 12:18 Message(s) : 443
|
|
Merci beaucoup, désolé pour mes réactions bizard, je n'était pas chez moi lorsque je vous aient répondu, donc j'ai regarder un peu vite. Je vais essayer ça demains et ça devrais marché.
Merci encore beaucoup.
_________________ Asus A7N8X Deluxe v2.0 | Athlon XP Barton 2500+@3200+ | 1024mo DDR 3200 | BFG Geforce 6600GT 128mo | Western Digital 160go 7200rpm | Maxtor 40go 7200rpm | Altec Lansing ATP4 | Samsung SyncMaster 763MB | Fan CoolerMaster Aero 7+ | Sennheiser HD212 Pro
|
|
| Haut |
|
 |
|
Page 1 sur 1
|
[ 11 message(s) ] |
|
Qui est en ligne ? |
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité |
|
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum
|
|
|
|