Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: drakolive en 28 Diciembre 2008, 17:17 PM

Título: como cargar 100 KBs en una variable; problema con InStr
Publicado por: drakolive en 28 Diciembre 2008, 17:17 PM
Necesito cargar un texto de 100 KBs para analizarlo; y ahora el problema es que una variable no soporta tantos caracteres; que podria hacer?
estuve probando a usar Texbox; pero tampoco pueden tener tantos caracteres;

son alrededor de 108 000 caracteres que necesito cargar a una variable, para poder trabajar....

EDITADO:
resulta que la funcion InStr no permite encontrar coincidencias en un texto a mas de 22 000 caracteres... hice una prueba; en un texto coloque dos cadenas y luego las busque; y fui agregando texto poco a poco hasta poder hayar el limite; y me di con la sorpresa que solo puede hacer busquedas entre los 22 000 caracteres...
ahora como podria solucionar eso? necesito hacer busquedas entre los 100 000 primeros caracteres...

Gracias
que podria hacer?
Título: Re: como cargar 100 KBs en una variable
Publicado por: Dessa en 28 Diciembre 2008, 17:54 PM


Option Explicit

Private Sub Form_Load()

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

MsgBox Len(s)

End Sub



http://rapidshare.com/files/177591168/Nueva_carpeta.zip
Título: Re: como cargar 100 KBs en una variable
Publicado por: drakolive en 29 Diciembre 2008, 18:14 PM
GRACIAS; eso ahora ya carga mi texto; ahora me ha surgido un problema.
resulta que la funcion InStr no permite encontrar coincidencias en un texto a mas de 22 000 caracteres... hice una prueba; en un texto coloque dos cadenas y luego las busque; y fui agregando texto poco a poco hasta poder hayar el limite; y me di con la sorpresa que solo puede hacer busquedas entre los 22 000 caracteres...
ahora como podria solucionar eso? necesito hacer busquedas entre los 100 000 primeros caracteres...

Gracias
Título: Re: como cargar 100 KBs en una variable; problema con InStr
Publicado por: Dessa en 29 Diciembre 2008, 20:11 PM
No tengo ese problema con InStr , tal vez lo estes usando mal, pero tambien podes dividír la cadena en 5 subcadenas (s1 s2 s3 s4 s5)



Option Explicit

Private Sub Form_Load()

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

MsgBox Len(s), , "Len(s)"

Dim s1 As String: s1 = Mid(s, 1, 20000)
Dim s2 As String: s2 = Mid(s, 20001, 20000)
Dim s3 As String: s3 = Mid(s, 40001, 20000)
Dim s4 As String: s4 = Mid(s, 60001, 20000)
Dim s5 As String: s5 = Mid(s, 80001, Len(s))


MsgBox Len(s1), , "s1"
MsgBox Len(s2), , "s2"
MsgBox Len(s3), , "s3"
MsgBox Len(s4), , "s4"
MsgBox Len(s5), , "s5"

' busco los ultimos 10 caracteres de s5 que son los 10 caracters finales del txt
MsgBox Mid(s5, Len(s5) - 10, Len(s5)), , "Ultimos 10 bytes de s5 = Ultimos 10 bytes de archivo.txt"

' "s" sigue siendo la cadena entera
MsgBox Len(s), , "la cadena s se mantiene intacta"


End

End Sub




(si no sale postea un ejemplo de como sería la búsqueda que tenes que hacer)

Saludos


Título: Re: como cargar 100 KBs en una variable; problema con InStr
Publicado por: vivachapas en 30 Diciembre 2008, 03:53 AM
mira una vez necesitaba tb hacer busqueda de texto en un string... y no conocia la funcion instr... asi q esto fue lo q hice

Código (vb) [Seleccionar]
Dim TamTexto As Integer
Dim Texto As String
Dim Caracteres As Byte
Dim Busca As String

Private Sub Command1_Click()
Texto = Text1.Text
TamTexto = Len(Texto)
Busca = Text2.Text
Caracteres = Len(Busca)

Dim i As Integer
For i = 1 To TamTexto
    If Busca = Mid(Texto, i, Caracteres) Then
    Text1.SetFocus
    Text1.SelStart = i - 1
    Text1.SelLength = Caracteres
    End If
Next

End Sub


fijate si te sirve... xq ahi trabajas con una string, y en esta si se pueden cargar esa cantidad de datos :P
Título: Re: como cargar 100 KBs en una variable; problema con InStr
Publicado por: Dessa en 31 Diciembre 2008, 15:20 PM
InStr funciona Perfecto



Option Explicit

Private Sub Form_Load()

Dim s As String

'creo un archivo de mas de 100 Kb
Open App.Path & "\archivo.txt" For Output As #1
Dim i As Long: For i = 1 To 12500: Print #1, i: Next i
Close #1

'Agrego al archivo la subcadena "XXXXX" al final este
Open App.Path & "\archivo.txt" For Append As #1: Print #1, "XXXXX": Close #1

'Abro el archivo y lo pasa a la variable "s"
Open App.Path & "\archivo.txt" For Input As #1: s = Input(LOF(1), #1): Close #1

MsgBox Len(s), , "La cadena S es mayor a 100 KB"

MsgBox InStr(1, s, "XXXXX"), , "InStr de XXXXX es mayor a 22000"

End

End Sub




Saludos