hola haber si alguien me puede ayudar
tengo un cli o como se llamen que funcionan con msdos o ficheros .bat el nombre del cli es (mkvverify.exe)
bueno cuando meto el codigo me genera un texto(.txt) como este
Duration : 00:01:02.490
File size: 12.8 MByte
Segment 0
Duration : 00:01:02.490
Muxing App : libebml v0.7.7 + libmatroska v0.8.1
Writing App : mkvmerge v2.3.0 ('Freak U') built on Sep 8 2008 18:32:16
Segment UID : 83 5E 73 12 7E 95 B8 E6 B2 83 1E 95 A1 16 C0 4F
Timecode Scale: 1,000,000
Track 0
Number : 1
UID : 0x00000001
Type : video
CodecID : V_MPEG4/ISO/AVC
Enabled : yes
Default : yes
Forced : no
Lacing : no
DefaultDuration : 40,000,000
MinCache : 1
MaxCache : 0
Language : eng
Resolution :
Pixels : 672x384
cropped : (0,0)-(672,384)
Display : 7x4
Unit : pixel
Track 1
Number : 2
UID : 0x2FA27A92
Type : audio
CodecID : A_MPEG/L2
Enabled : yes
Default : yes
Forced : no
Lacing : yes
DefaultDuration : 23,999,999
MinCache : 0
MaxCache : 0
Language : und
sampling frequency: 48000 Hz
channels : 2
bueno el texto es ese bueno por ejemplo quisiera extraer a un texbox lo que esta en rojo pero como siempre los pixel cambiam. yo e pensado si hay alguna forma de descartar la palabra pixels ya que esta no cambia
Pixels : 672x384
este es el codigo que uso para extrae un linea del texto pero lo que quiero es no extaer todas las palabras de la linea seleccionada a extraer
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)
Text1.Text = a(19)
End Sub
un saludo y gracias de antemano :)
'Hola, fijate cambiando esta linea de tu code:
Text1.Text = Mid(Replace(a(19), " ", ""), 8, Len(Replace(a(19), " ", "")))
'cambia el 19 por el que corresponda, saludos
no se si e entendido bien, lo que quieres es sacar la linea
Pixels : 672x384
de un fichero txt sabiendo que el 672x384 puede cambiar y pillar ese valor en una variable, ¿es asi?
si es asi simplemente... instr
gracias dessa voy a probar tu codigo
y si kennylive los numeros cambian dependiendo de la informacion del vichero en este caso (videos)
como funciona instr para extrae las palabras despues de la cadena
Hola , no te funcionó el Mid ???, si es así prueba con este code:
Private Sub Command1_Click()
Open App.Path & "\mkvverify.txt" For Input As #1
Dim s As String: s = Input(LOF(1), #1)
s = Replace(Replace(s, vbNewLine, ""), " ", "")
Close #1
Dim pos1 As Long: pos1 = InStr(s, "Pixels:")
Dim pos2 As Long: pos2 = InStr(s, "cropped:")
s = Mid(s, pos1 + 7, pos2 - pos1 - 7): Text1 = s
End Sub
Saludos
sol funciona con la line que as programado como hago para que funcione con otra?
Por supuesto, es que tu pregunta inicial solo se refiere a los pixeles, ahora, a que linea te refieres ?
pues lo que pasa que con el codigo pimero que me as dado funciono bien con las lineas
del texto que puse
peror hay otras texto(.txt) que no se matienen en la pocicion de linea otras bajan 3 lineas mas abago bueno y eso si baja el texto de linea no sirve el codigo para extraer la palabra gracias por tu ayuda compañero :)
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: x = InStr(Replace(a(22), " ", ""), ":")
'If x > 0 Then
Text1.Text = Mid(Replace(a(22), " ", ""), x + 1, Len(Replace(a(22), " ", "")))
'Else
'Text1 = "En esta linea no hay dos puntos"
'End If
End Sub
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 ;)
Cuales serían los datos que quieres extraer del archivo mkvverify.txt ( pixels es uno, pero cuales serían los otros ??? )
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
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)
esto es lo que buscaba pero para dactarlo a otras lineas como hago ?
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:"
na no funciona conmigo
porque no escribes el codigo que has puesto y me dices que dato quieres extraer con dicho code.
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
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
Otra opción de búsqueda sin For sería :
Private Sub Command1_Click()
Open App.Path & "\mkvverify.txt" For Input As #1
Dim s As String: s = Input(LOF(1), #1)
s = Replace(Replace(s, vbNewLine, ""), " ", "")
Close #1
Dim pos1 As Long: pos1 = InStr(s, "Pixels:")
Dim pos2 As Long: pos2 = InStr(s, "cropped:")
Dim s1 As String: s1 = Mid(s, pos1 + 7, pos2 - pos1 - 7): Text1 = s1
MsgBox s1
pos1 = InStr(s, "track1")
pos2 = Len(s)
Dim s2 As String: s2 = Mid(s, pos1, pos2)
pos1 = InStr(s2, "avg.bitrate:")
pos2 = InStr(s2, "frames:")
s2 = Mid(s2, pos1 + 12, pos2 - pos1 - 12): Text1 = s2
MsgBox s2
pos1 = InStr(s, "track2")
pos2 = Len(s)
Dim s3 As String: s3 = Mid(s, pos1, pos2)
pos1 = InStr(s3, "avg.bitrate:")
pos2 = InStr(s3, "frames:")
s3 = Mid(s3, pos1 + 12, pos2 - pos1 - 12): Text1 = s3
MsgBox s3
End Sub
ok gracias por tu ayuda creo q ya solucione con todos los codigo que has puestos :)
y eso gracias de nuevo si surge algo ya preguntare :D