extaer un texto cambiante de un archivo (.txt)

Iniciado por andrer03, 5 Noviembre 2008, 00:03 AM

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

andrer03

Adrian Dessa.
y si el texto a extraer cambiara de lugar es decir de linea y de posicion en la linea en este caso como ceria el codigo? el anterior codigo me sirvio para extraer los texto que se mantienen en su linea y pocion toda la vida gg  ;D gracias por ayudarme a ver si puedo ayudarte alguna ves compañero ;)

Dessa

Cuales serían los datos que quieres extraer del archivo mkvverify.txt ( pixels es uno, pero cuales serían los otros ??? )
Adrian Desanti

andrer03

mira el texto completo es este





                                                                               

                                                                               

Duration : 00:04:19.735
File size: 35.2 MByte
Segment 0
  Duration      : 00:04:19.735
  Muxing App    : libebml v0.7.7 + libmatroska v0.8.1
  Writing App   : mkvmerge v2.0.2 ('You're My Flame') built on Feb 21 2007 23:40:55
  Segment UID   : 89 C9 D4 5B 34 CD CF 43 91 04 A3 E1 5D 70 EB 37
  Timecode Scale: 1,000,000
    Track 0
      Number            : 1
      UID               : 0xE07EF2BC
      Type              : audio
      CodecID           : A_MPEG/L3
      Enabled           : yes
      Default           : yes
      Forced            : no
      Lacing            : yes
      DefaultDuration   : 26,122,448
      MinCache          : 0
      MaxCache          : 0
      Language          : und
      sampling frequency: 44100 Hz
      channels          : 2
    Track 1
      Number            : 2
      UID               : 0x00000001
      Type              : video
      CodecID           : V_MPEG4/ISO/AVC
      Enabled           : yes
      Default           : yes
      Forced            : no
      Lacing            : no
      DefaultDuration   : 41,708,332
      MinCache          : 1
      MaxCache          : 0
      Language          : eng
      Resolution        :
        Pixels          : 624x416
        cropped         : (0,0)-(624,416)
        Display         : 3x2
        Unit            : pixel


Checking segment 0...

parsing Cues...
done


  Pos. in file:       4,172,319 bytes (1 MB/s)   Timecode: 00:00:38.087   
  Pos. in file:       7,237,947 bytes (3 MB/s)   Timecode: 00:01:00.227   
  Pos. in file:       8,905,594 bytes (5 MB/s)   Timecode: 00:01:16.326   
  Pos. in file:      10,324,716 bytes (5 MB/s)   Timecode: 00:01:26.309   
  Pos. in file:      11,796,027 bytes (6 MB/s)   Timecode: 00:01:36.471   
  Pos. in file:      13,338,978 bytes (7 MB/s)   Timecode: 00:01:44.479   
  Pos. in file:      16,917,644 bytes (10 MB/s)   Timecode: 00:02:10.589   
  Pos. in file:      21,634,379 bytes (12 MB/s)   Timecode: 00:02:42.746   
  Pos. in file:      25,445,433 bytes (15 MB/s)   Timecode: 00:03:04.893   
  Pos. in file:      30,343,595 bytes (17 MB/s)   Timecode: 00:03:38.984   
  Pos. in file:      34,890,414 bytes (20 MB/s)   Timecode: 00:04:03.076   

























raw stream sizes:
track   1     :      6,201,460   avg. bitrate:    191 kbps   frames:    9,944
track   2     :     30,637,513   avg. bitrate:    944 kbps   frames:    6,184
-----------------------------------------------------------------------------
sum of tracks :     36,838,973
segment size  :     36,958,750
-----------------------------------------------------------------------------
overhead      :        119,777



me interesa extrae la parte
track   1     :      6,201,460   avg. bitrate:    191 kbps   frames:
  9,944

lo que pasa que esta linea cambia de lugar y si colo el numero de linea que le coresponde otro dia con otro archivo mkv la linea no sera la misma bajara la posicion o subira de posicion

Dessa

#13


Private Sub Command1_Click()

Dim s As String, a() As String
Open App.Path & "\mkvverify.txt" For Input As #1
s = Input(LOF(1), #1)
Close #1
a = Split(s, vbNewLine)

Dim x As Long: Dim i As Long

For i = 0 To UBound(a)
  x = InStr(Replace(a(i), " ", ""), "avg.bitrate")
    If x > 0 Then
      MsgBox Mid(Replace(a(i), " ", ""), x + 12, InStr(Replace(a(i), " ", ""), "frames") - x - 12), , "LINEA  " & i + 1
      Exit For
    End If
Next i

End Sub



' cambia msgbox por:
Text1 = Mid(Replace(a(i), " ", ""), x + 12, InStr(Replace(a(i), " ", ""), "frames") - x - 12)


Adrian Desanti

andrer03

esto es lo que buscaba pero para dactarlo a otras lineas como hago ?

Dessa


For i = 0 To UBound(a)
  x = InStr(Replace(a(i), " ", ""), "avg.bitrate")
    If x > 0 Then
      MsgBox Mid(Replace(a(i), " ", ""), x + 12, InStr(Replace(a(i), " ", ""), "frames") - x - 12), , "LINEA  " & i + 1
      Exit For
    End If
Next i

1) palabra anterior al dato a extraer sin espacios  en este caso "avg.bitrate"
2) palabra posterior al dato a extraer sin espacios en estre caso "frames"
3) distancia en caracteres entre la palabra anterior y el dato a extraer en este caso "12" "avg.bitrate:"
Adrian Desanti


Dessa

porque no escribes el codigo que has puesto y me dices que dato quieres extraer con dicho code.
Adrian Desanti

andrer03

raw stream sizes:
track   1     :      6,201,460   avg. bitrate:    191 kbps   frames:    9,944
track   2     :     30,637,513   avg. bitrate:    944 kbps   frames:    6,184

para extarer la que pone track 2

Dessa

#19



Private Sub Command1_Click()


Dim s As String, a() As String
Open App.Path & "\mkvverify.txt" For Input As #1
s = Input(LOF(1), #1)
Close #1
a = Split(s, vbNewLine)

Dim x As Long: Dim i As Long

For i = 0 To UBound(a)
  x = InStr(Replace(a(i), " ", ""), "avg.bitrate")
    If x > 0 Then
      MsgBox Mid(Replace(a(i), " ", ""), x + 12, InStr(Replace(a(i), " ", ""), "frames") - x - 12), , "LINEA  " & i + 1
      Exit For
    End If
Next i

For i = 0 To UBound(a)
  x = InStr(Replace(a(i), " ", ""), "track2")
    If x > 0 Then
      x = InStr(Replace(a(i), " ", ""), "avg.bitrate")
      MsgBox Mid(Replace(a(i), " ", ""), x + 12, InStr(Replace(a(i), " ", ""), "frames") - x - 12), , "LINEA  " & i + 1
      Exit For
    End If
Next i


End Sub




PD: sería bueno que para ir entendiendo el funcionamiento del code intentes  hacerlo en solo For, saludos
Adrian Desanti