Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: oJosLoCos en 4 Diciembre 2009, 15:35 pm



Título: Reemplazar Comas por Puntos en visual basic
Publicado por: oJosLoCos en 4 Diciembre 2009, 15:35 pm
Veran, tengo un proyecto pendiente . Es un programa que resuelve equaciones de segundo grado en adelante.

El problema está que visual basic reconoce el punto "." como indicador de que es un numero decimal
8.9

Pero si opera con ellos , lo transforma en ","

Quiero decir que si tengo 2 textbox y tienen que sumarse sus valores siendo los valores 3 + 3.4

Al darle al comand button , el resultado que aparecera en unnuevo comand box sera :
6,4

Sustituye el punto por la coma. De esa forma si deseo seguir operando para continuar con la operación matematica , visual basic reconoce el 6,4 como 64 y no da el resultado correcto.

He pensar en reemplazar el valor , por un . cada vez que salga , pero no se como.

Sabrian decirme alguna solucion?


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: isseu en 4 Diciembre 2009, 15:49 pm
antes de resolver la ecuacion cambia , por .


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: oJosLoCos en 4 Diciembre 2009, 17:04 pm
Si bueno.. eso es evidente ya lo dije yo mismo , pero COMO??


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: Novlucker en 4 Diciembre 2009, 17:11 pm
Replace
:http://msdn.microsoft.com/en-us/library/bt3szac5%28VS.80%29.aspx

Saludos


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: ssccaann43 © en 4 Diciembre 2009, 17:16 pm
Replace(TuValor, ",", ".")


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: oJosLoCos en 4 Diciembre 2009, 17:16 pm
No acavo de entender exactamente como funciona esa funcion. xD Algun ejemplo?

Gracias por todo.


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: ssccaann43 © en 4 Diciembre 2009, 17:20 pm
Código
  1. Private Sub Form_Load()
  2. Dim valor As Currency
  3. valor = "1750,58"
  4. MsgBox Replace(valor, ",", ".")
  5. End Sub


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: oJosLoCos en 4 Diciembre 2009, 17:35 pm
mm vale, pero para poder canviarlo en TODOS los textbox que tengo ??

Puedo hacer una Public Function y especificar que sea donde sea que aparezca una , se transforme a . ??


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: xkiz ™ en 4 Diciembre 2009, 18:33 pm
si., pero la verdad la funcion replace es tan corta y sensilla que casi es al cuete crear una funcion aparte, con solo Text1.text = Replace(Text1.text, ",", ".") es suficiente, creo por ahi me equivoco...


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: ssccaann43 © en 4 Diciembre 2009, 19:34 pm
Mira lo mejor que puedes hacer es declarar variables como currency o double, y alli en esa variable guardas el valor del número que deseas usarlo para reemplazar la coma por el punto, luego dicho resultado lo asignas al text que corresponda!

De verdad ya te dimos la solución, no es posible que no sepas como hacerlo!


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: oJosLoCos en 4 Diciembre 2009, 20:14 pm
No es tan sencillo.... almenos yo no lo veo así.

Los resultados de la formula de la equacion de segundo grado van saliendo , ya que es un proyecto visual. De nada me sirve declarar variable para remplazar 1 vez la coma por el punto , necesito saver como hacerlo siempre , `Para que este marcado en todo el programa.. , ya que sino , como explico en el primer post , el programa hace una operacion , que sale en un nuevo txtbox , i si ese numero va en decimal , lleva una , y la coma no la reconoce como separacion entre entero y decimal , por lo tanto no puede seguir operando correctamente.



Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: Hasseds en 4 Diciembre 2009, 20:25 pm
Código:


Private Sub Text1_Change()
  Text1 = Replace(Text1, ",", ".")
End Sub

Private Sub Text2_Change()
Text2 = Replace(Text2, ",", ".")
End Sub






Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: BlackZeroX en 4 Diciembre 2009, 21:37 pm
No se si funcione bien lo acabo de hace con el Block de Notas...

Corregido: Solo ingresa numeros con coma decimal el codigo te devuelve la suma con las comas decimales pertinentes.

Código
  1.  
  2. Private Sub Form_Load()
  3.    Dim res  As String
  4.    res = SumaFormatodecimal(3, "3,454.456,45", "3,454.456,45")
  5.    Call ReplacePuntoPorcomaDescimal(res)
  6.    Call MsgBox(res)
  7. End Sub
  8.  
  9. Public Function SumaFormatodecimal(ParamArray Numeros()) As String
  10. Dim Num             As Variant
  11. Dim Aux             As String
  12.  
  13.    For Each Num In Numeros
  14.        Aux = Num
  15.        Call ReplaceComaDescimal(Aux)
  16.        SumaFormatodecimal = Val(SumaFormatodecimal) + Val(Aux)
  17.    Next
  18. End Function
  19.  
  20. Public Sub ReplaceComaDescimal(ByRef ValStr As String)
  21.    ValStr = Replace(ValStr, ",", "")
  22. End Sub
  23.  
  24. Public Sub ReplacePuntoPorcomaDescimal(ByRef ValStr)
  25. Dim spl()               As String
  26. Dim LenAfter          as integer
  27.    spl = Split(CStr(ValStr), ".")
  28.    LenAfter = IIf(IniArray(spl), Len(spl(1)), 0)
  29.    ValStr = FormatNumber(ValStr, LenAfter, vbTrue, vbTrue, vbTrue)
  30. End Sub
  31.  
  32. Public Function IniArray(varArray() As String) As Boolean
  33. On Error Resume Next
  34.    If ((Not varArray) = -1) Then
  35.        IniArray = False
  36.    Else
  37.        IniArray = True
  38.    End If
  39. End Function
  40.  
  41.  

Dulces Lunas!¡.


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: BlackZeroX en 4 Diciembre 2009, 21:50 pm
para los textbox haces un for each

mira esta pagina:

http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/163-for-each-deshabilitar-frame.htm


Título: Re: Reemplazar Comas por Puntos en visual basic
Publicado por: oJosLoCos en 5 Diciembre 2009, 00:46 am
Muchas gracias , tanto al ejemplo como al aporte , me ha servido , empezare a hacerlo..
Gracias