como cargar 100 KBs en una variable; problema con InStr

Iniciado por drakolive, 28 Diciembre 2008, 17:17 PM

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

drakolive

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?

Dessa

#1


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
Adrian Desanti

drakolive

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

Dessa

#3
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


Adrian Desanti

vivachapas

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

Dessa

#5
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
Adrian Desanti