Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: RED_HORSE en 8 Abril 2006, 01:32 am



Título: leer un archivo txt
Publicado por: RED_HORSE en 8 Abril 2006, 01:32 am
   hola estoy intentando hacer un proyecto y  lo que queria preguntarles es si alguien sabe como hacer esto:

    Bueno tengo un archivo txt con muchas lineas de texto de los cuales yo solo quiero obtener alguna parte de ese texto que es solo la parte que contiene los numeros.
    Seria algo asi

Volt = 12244 v voltage expl...................
 
 Amp = 4578 A  amperaje dado en mili...............

 Tem = 4785 F   farenjei en lo.....................

 amb = 7889 E   fdfsf ...................

 etc.

 etc.

 etc

  yo quiero que mi aplicasion solo lea los numeros que estan en rojo aqui en mi ejemplo y los coloque en una variable.


   Intentando por alli trate de hacer con esta forma para poder leer el txt y solo leia la primera linea y lo demas no :-(

 solo leia
Volt = 12244 v voltage expl...................
 

Private Sub Form_Load()
Dim a As String

If a = "" Then
    Open "c:\texto.txt" For Input As #1
    Input #1, a
    Close #1
End If

Text1.Text = a
End Sub


  bueno espero que alguien me pude ayudar se lo agradecería mucho ;D ;D ;D ;D


Título: Re: leer un archivo txt
Publicado por: Cicklow en 8 Abril 2006, 02:13 am
Código:
sw1=0:sw2=0
open "archivo.txt" for input as #1
 line input #1, contenido
 for i=1 to len(contenido)
   car = mid(contenido,i,1)
   if car="=" and sw1=0 then
     numero = numero & car
     sw2=1
   end if
   if sw2=1 and car=" " then
     open "numeros.txt" for append as #2
       print #2, numero
     close
     numero=""
     sw1=0:sw2=0
     exit for
   end if
 next
close

espero que te ayude, este ejemplo no fue provado con el vb ya que no lo tengo aka


Título: Re: leer un archivo txt
Publicado por: .:CorTeX:. en 8 Abril 2006, 03:09 am
Miralo:

Código:
Private Sub Form_Load()
Dim file_data$
Open "C:\Archivo.txt" For Append As #1
While Not EOF(1)
Print #1, file_data$
Text1.text=Text1.text & file_data$ & vbNewLine
End Sub


Título: Re: leer un archivo txt
Publicado por: Cicklow en 8 Abril 2006, 15:37 pm
Miralo:

Código:
Private Sub Form_Load()
Dim file_data$
Open "C:\Archivo.txt" For Append As #1
While Not EOF(1)
Print #1, file_data$
Text1.text=Text1.text & file_data$ & vbNewLine
End Sub

tu programa tiene un error, seria haci para que funcione:
Código:
Private Sub Form_Load()
Dim file_data$
Open "C:\Archivo.txt" For Append As #1
While Not EOF(1)
 Print #1, file_data$
 Text1.text=Text1.text & file_data$ & vbNewLine
Wend
End Sub


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 8 Abril 2006, 16:29 pm
 si no me equivoco eso no sirve para leer un archivo sino par escribir en el y cosa que yo no quiero hacer ;D
Miralo:

Código:
Private Sub Form_Load()
Dim file_data$
Open "C:\Archivo.txt" For Append As #1
While Not EOF(1)
Print #1, file_data$
Text1.text=Text1.text & file_data$ & vbNewLine
End Sub

tu programa tiene un error, seria haci para que funcione:
Código:
Private Sub Form_Load()
Dim file_data$
Open "C:\Archivo.txt" For Append As #1
While Not EOF(1)
 Print #1, file_data$
 Text1.text=Text1.text & file_data$ & vbNewLine
Wend
End Sub


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 8 Abril 2006, 16:39 pm
 esta parte del codigo de ciclos tampoco nunjca lo pedi :-\
 
lo que yo quiero hacer es que primero me abra todo ese texto que estaba en un txt y lo pueda leer entero en text1.text y de alli resin que tome eso datos numericos lo meta en diferentes varieables para luego utilizarlo en unas ecuasiones que tengo que hacer ;D ;D ;D



open "numeros.txt" for append as #2
       print #2, numero
     close
     numero=""
     sw1=0:sw2=0
     exit for
   end if
next
close


Título: Re: leer un archivo txt
Publicado por: Cicklow en 8 Abril 2006, 17:36 pm
ok,..........
pero kon lo que te di ni una idea te das.... no lo podes hacer?????

es facil:

Código:
open "file.txt" for input as #1
 contenido =  input(lof(1),1)
close
Text1.text = Contenido

Ahora teens que recorrer el text1, para ver lo que tenes!!! y meter los numeros en variables!!!

Código:
sw1=0:sw2=0:X=1
Dim Numeros(1 TO 10000)
for i=1 to len(text1.text)
   car = mid(text1.text,i,1)
   if car="=" and sw1=0 then
     numero = numero & car
     sw2=1
   end if
   if sw2=1 and car=" " then
     Numeros(X) = Numero
     X=X+1
     numero=""
     sw1=0:sw2=0
   end if
next
Espero que te sea de ayuda, y que prendas la lamparita!


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 8 Abril 2006, 18:07 pm
   bueno gracias cicklow  mira eso de leer el txt y ponerlo en un texbox ya lo hice y funciona y mira yo lo hice de este otra forma pero es casi iguak
 
 Private Sub Command1_Click()
Dim strName As String, strFile As String, strTemp As String
On Error GoTo ErrHandler
strName = InputBox("Filename:")
Open strName For Input As #1
strFile = ""
Do Until EOF(1)
Line Input #1, strTemp
strFile = strFile & strTemp & vbCrLf
Loop
Text1.Text = strFile
Close #1
ErrHandler:
End Sub

 Pero de lo otro estoy tratando de entender y lo que estendi fue esto:

  sw1=0:sw2=0:X=1    // Definimos cada valor
Dim Numeros(1 TO 10000) //Ponemos la variable numeros del 1 al 10000
for i=1 to len(text1.text)  //leemos lo que tiene el texbox
   car = mid(text1.text,i,1)  // Lo colocamos en la variable car
   if car="=" and sw1=0 then //Si car es igual a = y sw1=0 entonces lavariable numero sera igual a numero y a car y sw2=1
     numero = numero & car
     sw2=1
   end if
   if sw2=1 and car=" " then  // Si sw2=1 y car es igual a nada entonces numero(x) ba a ser igual a Numero y x sera igual a x +1 y numero igual a nada y sw1 y sw2 igual a cero
     Numeros(X) = Numero
     X=X+1     
     numero=""
     sw1=0:sw2=0 
   end if
next

 Y DE QUE ME SERVIRIA TODO ESTO????


Título: Re: leer un archivo txt
Publicado por: .:CorTeX:. en 8 Abril 2006, 18:17 pm
Si, disculpame, lo de el error es porque no hice terminar el bucle osea que me falto el Wend.

Gracias Cicklow Por la correccion ;)


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 8 Abril 2006, 18:17 pm
 POR EJEMPLO SI YO PUSIERA UN BOTN CON ESTE CODIGO NO ME MOSTRARIA NINGUN NUMERO QUE APARECE EN EL TEXTBOX

 Private Sub Command1_Click()
Text2.Text = numero
End Sub


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 9 Abril 2006, 18:19 pm
 perdon ciclos pero es que aun no lo puedo entender ;D ;D


Título: Re: leer un archivo txt
Publicado por: Cicklow en 10 Abril 2006, 17:43 pm
Tuve un error, osea no mire bien mi codigo y ahora cuando te lo estaba esplicando me fije bien y no funcionaria, esta es la correccion
Código:
sw1=0:sw2=0:X=1 'Iniciamos las variables
Dim Numeros(1 TO 10000) 'Creamos un vector
'rellenamos el vector (no es nesesario pero sirve
for i=1 to ubound(Numeros)
 Numeros(I)=""
next

for i=1 to len(text1.text) 'desde 1 hasta lo que tiene el text1
   car = mid(text1.text,i,1) 'guardamos de a 1 caracter
   if sw1=1 then '1
     numero = numero & car     
     sw2=1
   end if           
   if sw2=1 and car=" " then '2
     Numeros(X) = Numero
     X=X+1
     numero=""
     sw1=0:sw2=0
   end if
   if car = "=" then sw1=1 '3
next
1: lo que hacemos es que si sw1=1 entonces guardamos el cntenido de car en la variable numero, concatenandola con el resto, ejemplo:
car =1
Numero = "52" 'ya iniciado
Entonces
Numero = Nunmero & Car
Numero = "521" ' Resultado final o semifinal!!!

Ponemos el sw2=1, para que deje de grabar numeros si encuentra un espacio

2- si el car=" " (un espacio) y sw2=1 entonces significa que el numero ya fue gravado en la variable Numero, lo que hacemos entonces es:
Guardamos ese numero en el vector Numeros, le sumamos unos mas a X (este sera el indice del vector), y vaciamos variables

3- verificamos si el caracter es un "=" entonces lo que hacesmos es poner sw1 en 1 para que komienze a guardar caracteres

como resultad fianl tendremos en el vector todos los numeros, y si lo keremos mostrar en un textbox seria de esta manera:
Código:
tmptxt = ""
for i=1 to ubound(Numeros)
 if Numeros(I) != "" Then
   tmptxt = Numeros(I) & vbnewline & tmptxt
 Else
  exit for
 End if
next
text1.value = tmptxt

Saludos espero ek te ayude!!


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 11 Abril 2006, 01:06 am
  gracias de nuevo cicklow ahora me quedo mas claro que nunca

 lo que no me quedo muy en claro es lo de verlo en el texbox ya que esto me da error  if Numeros(I) != "" Then

  luego quite el caracter ! y me dio otro error en Text1.Value = tmptxt

PD: yo puse otro texbox con el nombre tmptxt


Título: Re: leer un archivo txt
Publicado por: Cicklow en 11 Abril 2006, 01:46 am
  gracias de nuevo cicklow ahora me quedo mas claro que nunca

 lo que no me quedo muy en claro es lo de verlo en el texbox ya que esto me da error  if Numeros(I) != "" Then

  luego quite el caracter ! y me dio otro error en Text1.Value = tmptxt

PD: yo puse otro texbox con el nombre tmptxt

con respecto al != es porke laburo con torls lenguajes jejeje reeemplaza el != por <> y listo!!!

con el tmptxt cambialo por otro nombre (que se yo: tmptxt2, u lo que kieras)

saludos!


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 11 Abril 2006, 16:55 pm
  perdon cicklow te sigo al pie dela letra y aun no lo logro te paso tal cual como lo puse y fijate:

(http://img143.imageshack.us/img143/8122/trabajo5xy.png)




Private Sub Command1_Click()
beto.Value = tmptxt
End Sub

Private Sub Form_Load()
Open "c:\texto.txt" For Input As #1
contenido = Input(LOF(1), 1)
Close
Text1.Text = contenido

sw1 = 0: sw2 = 0: X = 1 'Iniciamos las variables
Dim Numeros(1 To 10000) 'Creamos un vector
'rellenamos el vector (no es nesesario pero sirve
For I = 1 To UBound(Numeros)
Numeros(I) = ""
Next
'**************************************************
For I = 1 To Len(Text1.Text) 'desde 1 hasta lo que tiene el text1
   car = Mid(Text1.Text, I, 1) 'guardamos de a 1 caracter
   If sw1 = 1 Then '1
     numero = numero & car
     sw2 = 1
   End If
   If sw2 = 1 And car = " " Then '2
     Numeros(X) = numero
     X = X + 1
     numero = ""
     sw1 = 0: sw2 = 0
   End If
   If car = "=" Then sw1 = 1 '3
Next
'***********************************************
Dim tmptxt
tmptxt = ""
For I = 1 To UBound(Numeros)
If Numeros(I) <> "" Then
   tmptxt = Numeros(I) & vbNewLine & tmptxt
Else
  Exit For
End If
Next

End Sub


Título: Re: leer un archivo txt
Publicado por: Cicklow en 11 Abril 2006, 18:32 pm
  perdon cicklow te sigo al pie dela letra y aun no lo logro te paso tal cual como lo puse y fijate:

(http://img143.imageshack.us/img143/8122/trabajo5xy.png)




Private Sub Command1_Click()
beto.Value = tmptxt
End Sub

Private Sub Form_Load()
Open "c:\texto.txt" For Input As #1
contenido = Input(LOF(1), 1)
Close
Text1.Text = contenido

sw1 = 0: sw2 = 0: X = 1 'Iniciamos las variables
Dim Numeros(1 To 10000) 'Creamos un vector
'rellenamos el vector (no es nesesario pero sirve
For I = 1 To UBound(Numeros)
Numeros(I) = ""
Next
'**************************************************
For I = 1 To Len(Text1.Text) 'desde 1 hasta lo que tiene el text1
   car = Mid(Text1.Text, I, 1) 'guardamos de a 1 caracter
   If sw1 = 1 Then '1
     numero = numero & car
     sw2 = 1
   End If
   If sw2 = 1 And car = " " Then '2
     Numeros(X) = numero
     X = X + 1
     numero = ""
     sw1 = 0: sw2 = 0
   End If
   If car = "=" Then sw1 = 1 '3
Next
'***********************************************
Dim tmptxt
tmptxt = ""
For I = 1 To UBound(Numeros)
If Numeros(I) <> "" Then
   tmptxt = Numeros(I) & vbNewLine & tmptxt
Else
  Exit For
End If
Next

End Sub

si no declaramos tmptxt como global no funcionara.
mejoremoslo!::

Código:
Private Sub Command1_Click()
Open "c:\texto.txt" For Input As #1
  contenido = Input(LOF(1), 1)
Close
Text1.Text = contenido

sw1 = 0: sw2 = 0: X = 1 'Iniciamos las variables
Dim Numeros(1 To 10000) 'Creamos un vector
'rellenamos el vector (no es nesesario pero sirve
For I = 1 To UBound(Numeros)
Numeros(I) = ""
Next
'**************************************************
For I = 1 To Len(Text1.Text) 'desde 1 hasta lo que tiene el text1
   car = Mid(Text1.Text, I, 1) 'guardamos de a 1 caracter
   If sw1 = 1 Then '1
     numero = numero & car
     sw2 = 1
   End If
   If sw2 = 1 And car = " " Then '2
     Numeros(X) = numero
     X = X + 1
     numero = ""
     sw1 = 0: sw2 = 0
   End If
   If car = "=" Then sw1 = 1 '3
Next
'***********************************************
Dim tmptxt 'en el anterior si la colokas aka a la variable
tmptxt = "" 'la lee el evento load nada mas!!!!!! colokalas     
                 'colokalas en la general para que te la lean todos!
For I = 1 To UBound(Numeros)
If Numeros(I) <> "" Then
   tmptxt = Numeros(I) & vbNewLine & tmptxt
Else
  Exit For
End If
Next

beto.Value = tmptxt

End Sub
Te digo que este script (por asi decirlo), no lo he provado porke donde estoy no tengo el VB. cualkier cosa avisame!!!

podes usar el script anterior si declaras "Dim tmptxt" en la general!!, y asi te ahorras de amontonar todo!


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 11 Abril 2006, 22:50 pm
  Me da un error en esta parate:
No tengo ni la minima idea de por que ya que ahora puse tosa editadas las variables fijate
(http://img57.imageshack.us/img57/2848/error5mt.jpg)



Título: Re: leer un archivo txt
Publicado por: Cicklow en 12 Abril 2006, 00:29 am
por una sensilla razon... el texbox no tiene la propiedad value (la tiene pero es  de solo lectura), asike usa
Código:
beto.text = ?


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 12 Abril 2006, 23:21 pm
  No amigo creo que esto ya es en vano ahora no da mas ningun error pero  no muestra ningun numero.
  te pongo de nuevo los codigos:

Private Sub Command1_Click()
beto.Text = tmptxt
End Sub
Private Sub Form_Load()
Open "c:\texto.txt" For Input As #1
contenido = Input(LOF(1), 1)
Close
Text1.Text = contenido

sw1 = 0: sw2 = 0: X = 1 'Iniciamos las variables
Dim Numeros(1 To 10000) 'Creamos un vector
'rellenamos el vector (no es nesesario pero sirve
For I = 1 To UBound(Numeros)
Numeros(I) = ""
Next
'**************************************************
For I = 1 To Len(Text1.Text) 'desde 1 hasta lo que tiene el text1
   car = Mid(Text1.Text, I, 1) 'guardamos de a 1 caracter
   If sw1 = 1 Then '1
     numero = numero & car
     sw2 = 1
   End If
   If sw2 = 1 And car = " " Then '2
     Numeros(X) = numero
     X = X + 1
     numero = ""
     sw1 = 0: sw2 = 0
   End If
   If car = "=" Then sw1 = 1 '3
Next
'***********************************************
Dim tmptxt
tmptxt = ""
For I = 1 To UBound(Numeros)
If Numeros(I) <> "" Then
   tmptxt = Numeros(I) & vbNewLine & tmptxt
Else
  Exit For
End If
Next

End Sub


Título: Re: leer un archivo txt
Publicado por: Cicklow en 13 Abril 2006, 16:54 pm
aver provemos esto pone un punto de corte en
tmptxt = ""
y fijate el contenido del array Numeros()

fijate si tiene algo

podes hacer que te los muestre en la ventana de inmediato haci:

msgbox Numeros(1)

si te muestra algo es que se guardan los numeros pero sino es que hay otro problema...
hoy me llevo el codigo este y lo pruevo en mi casa!!


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 14 Abril 2006, 00:42 am
  no me muestra nada espero que me ayudes amigo eres mi dios ;D ;D ;D ;D ;D


Título: Re: leer un archivo txt
Publicado por: Cicklow en 14 Abril 2006, 01:12 am
weno fiera poneme unas velitas!!!!! jejejeje no mentira:
(http://img20.imageshack.us/img20/7545/clipboard5sg.jpg)

Código:
Private Sub Form1_Load()
Open "c:\texto.txt" For Input As #1
    contenido = Input(LOF(1), 1)
Close
Text1.Text = contenido
End Sub

Private Sub Command1_Click()
sw1 = 0: sw2 = 0: X = 1 'Iniciamos las variables
sw3 = 0
Dim Numeros(1 To 10000) 'Creamos un vector
'rellenamos el vector (no es nesesario pero sirve
For I = 1 To UBound(Numeros)
Numeros(I) = ""
Next
'**************************************************
For I = 1 To Len(Text1.Text)
   car = Mid(Text1.Text, I, 1)
   If sw1 = 1 Then
     numero = numero & car
     sw2 = 1
   End If
   If sw2 = 1 And car = " " Then
     Numeros(X) = Trim(numero)
     X = X + 1
     numero = ""
     sw1 = 0: sw2 = 0: sw3 = 0
   End If
   If car = " " And sw3 = 1 Then sw1 = 1
   If car = "=" And sw3 = 0 Then sw3 = 1
Next
'***********************************************
Dim tmptxt
tmptxt = ""
For I = 1 To UBound(Numeros)
If Numeros(I) <> "" Then
   tmptxt = Numeros(I) & vbNewLine & tmptxt
Else
  Exit For
End If
Next
Text2 = tmptxt
End Sub


Título: Re: leer un archivo txt
Publicado por: RED_HORSE en 14 Abril 2006, 22:06 pm
  gracias amigo me sacaste un peso mas de ensima che  ;D ;D ;D ;D ;D