Como sumar numeros obtenidos al leer un archivo de texto? ayuda please.

Iniciado por El_Marine, 3 Octubre 2006, 04:29 AM

0 Miembros y 1 Visitante están viendo este tema.

El_Marine

Hola a todos,veamos, como puedo sumar numeros,tomados a leer un archivo de texto,veamos, al leer un archivo de texto obtengo esto:

501||5||||11||20||0||0||0

(Los || son retornos de carros,intros..)

Como puedo quitar los caracteres || del text?

Como podría sumar todo lo que ahi en el text, tomado del archivo?

Espero sus respuestas,saludos.


_Sergi_

Simplemente basta con crear una matriz con todos los números. Para ello usamos Split, pasándole como argumento los datos y el separador utilizado (En éste caso, ||)

Luego, usamos un bucle para recorrer todos los números y sumarlos.

Sería algo así, espero que no tenga ningún error.

Código (vb) [Seleccionar]
Private Sub Picture1_Click()
On Error Resume Next
Dim ValorASumar As Integer
Dim Datos As String
Dim Suma As Integer
'Llenamos la variable datos
Datos = "501||5||||11||20||0||0||0"
'Hacemos la matriz
MatrizDatos = Split(Datos, "||")
'Bucle que recorre todos los numeros y los suma
For n = 0 To UBound(MatrizDatos)
Valor = MatrizDatos(n)
Suma = Suma + Valor
Next n
'Presentamos el resultado
MsgBox "La suma es: " & Suma
End Sub


Para terminar, y si por alguna razón los separadores son otros caraceres (por ejemplo intro, como has dicho) puedes sustituirlos utilizando Replace, ya que los retornos de carro, espacios, etc son caracteres normales y corrientes.

Texto = Replace(Text1.Text, Chr(13), "||")

En vez de Chr(13) también puedes usar la constante vbCrLf como es lógico.

Un saludo
Proyecto de Ingeniero

<--v1c1ous-->

¿Sumar o unir?

Como sea, por ejemplo:

Esto une la cadena de numeros:


Dim Cadena as String
Dim Separar() as String
Dim i as Interger

Cadena = "501||5||||11||20||0||0||0"
Sperar = Split(Cadena, "||")

Dim Buffer as String
For i = 0 To UBound(Separar)
'Unirlo
'Buffer = Buffer & Separar(i)
'O bien sumarlo
'Buffer = Buffer + Separar(i)
Next i


PD: Ya lo habia escrito todo _Sergi_, puse mandar y ya habias posteado :), lo posteo igual.