Conflicto con asignaciones de variables

Iniciado por demoniox12, 1 Septiembre 2008, 17:43 PM

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

demoniox12

Hola! tengo un problemita..

yo abro un archivo binario y le quiero hacer un split.. pero la variable del split no puede ser byte.. o sea miren..

Código (vb) [Seleccionar]

Dim nFile As Integer
Dim Contenido() As Byte
nFile = FreeFile
Open ruta For Binary As #nFile
   ReDim Contenido(LOF(nFile) - 1)
   Get #nFile, , Contenido
Close #nFile

ContDividido = Split(Contenido, "|Separacion|")
Contenido = ContDividido(1)


y ahi Contenido ya se decajeta.. yo quiero que siga en modo byte y quiero obtener lo que le sigue a |Separacion|...

Desde ya muchas gracias =)

Salu2!
By Demoniox

s E t H

encontre la solucion en tratarlo como string y pasarlo a byte despues de la division.. hice este code para probarlo (uso demasiadas variables pero si queres ahorrar memoria fijate vos..)

Código (vb) [Seleccionar]
Private Sub Form_Load()
Dim nFile As Integer
Dim Contenido As String
Dim ContenidoMedio() As String
Dim ContenidoFinal() As Byte

Contenido = "asdasdsadSEPARADOR123456"

ContenidoMedio = Split(Contenido, "SEPARADOR")

ReDim ContenidoFinal(Len(ContenidoMedio(1)))

ContenidoFinal() = ContenidoMedio(1)
   
MsgBox ContenidoFinal
End Sub


y adaptado a tu code seria algo asi..

Código (vb) [Seleccionar]
Dim nFile As Integer
Dim Contenido As String
Dim ContenidoMedio() As String
Dim ContenidoFinal() As Byte
nFile = FreeFile
Open ruta For Binary As #nFile
        Contenido = Input(LOF(Free), #Free)
Close #nFile

ContenidoMedio = Split(Contenido, "SEPARADOR")

ReDim ContenidoFinal(Len(ContenidoMedio(1)))

ContenidoFinal() = ContenidoMedio(1)

demoniox12

Cita de: s E t H en  1 Septiembre 2008, 18:23 PM
encontre la solucion en tratarlo como string y pasarlo a byte despues de la division.. hice este code para probarlo (uso demasiadas variables pero si queres ahorrar memoria fijate vos..)

Código (vb) [Seleccionar]
Private Sub Form_Load()
Dim nFile As Integer
Dim Contenido As String
Dim ContenidoMedio() As String
Dim ContenidoFinal() As Byte

Contenido = "asdasdsadSEPARADOR123456"

ContenidoMedio = Split(Contenido, "SEPARADOR")

ReDim ContenidoFinal(Len(ContenidoMedio(1)))

ContenidoFinal() = ContenidoMedio(1)
   
MsgBox ContenidoFinal
End Sub


y adaptado a tu code seria algo asi..

Código (vb) [Seleccionar]
Dim nFile As Integer
Dim Contenido As String
Dim ContenidoMedio() As String
Dim ContenidoFinal() As Byte
nFile = FreeFile
Open ruta For Binary As #nFile
        Contenido = Input(LOF(Free), #Free)
Close #nFile

ContenidoMedio = Split(Contenido, "SEPARADOR")

ReDim ContenidoFinal(Len(ContenidoMedio(1)))

ContenidoFinal() = ContenidoMedio(1)


estuve probando.. pero no me funciono :S deberia haber alguna forma de tratar siempre en Byte o alguna otra solucion :S
gracias igual man..

Salu2
By Demoniox

s E t H

ni siquiera te funciono el de arriba? o esta mal adaptado?

si el primero funciona, entonces adaptalo a tu proyecto.. si no, decime que error te da e intenta debuguear para buscar el error

supongo que se puede hacer tratandolo siempre como byte, pero por que si asi es mas simple?

demoniox12

Cita de: s E t H en  2 Septiembre 2008, 19:08 PM
ni siquiera te funciono el de arriba? o esta mal adaptado?

si el primero funciona, entonces adaptalo a tu proyecto.. si no, decime que error te da e intenta debuguear para buscar el error

supongo que se puede hacer tratandolo siempre como byte, pero por que si asi es mas simple?

si intente con la solucion que me diste y la modifique varias veces para ver si la hacia andar pero nada.. se descajeta al pasar de string a byte mira intenta con cualquier archivo .exe ponle una marca en cualquier lugar e intenta guardar la 2da parte pero siempre en byte, xq lo que yo necesito es pasarle esos bytes a una funcion, pero igualmente guardalos en otro archivo y miralo con el word pad o con lo que sea y veras que cambia el contenido digamos que se modifica y deja de ser lo que debe ser...

salu2!
PD: te agregue al msn.. cualkier cosa mi mail esta en el perfil =)
By Demoniox

s E t H

ese  msn lo uso una vez x año  :rolleyes:

ahora no tengo el vb para probar pero creo que la prueba que hice funcionaba..

si el problema esta en pasar de string a byte se podria hacer byte por byte..


Código (vb) [Seleccionar]
Dim nFile As Integer
Dim Contenido As String
Dim ContenidoMedio() As String
Dim ContenidoFinal() As Byte
nFile = FreeFile
Open ruta For Binary As #nFile
        Contenido = Input(LOF(Free), #Free)
Close #nFile

ContenidoMedio = Split(Contenido, "SEPARADOR")

contenido= ContenidoMedio(1)
ReDim ContenidoFinal(Len(contenido))


dim i
for i=1 to len(contenido)
contenidofinal(i-1)=asc(mid(i,contenido,1)) 'aca no se si es asi o:   mid(contenido,i,1)
next i


repito: como no tengo el vb aca no se si funciona bien, pero deberia

demoniox12

Cita de: s E t H en  5 Septiembre 2008, 23:03 PM
ese  msn lo uso una vez x año  :rolleyes:

ahora no tengo el vb para probar pero creo que la prueba que hice funcionaba..

si el problema esta en pasar de string a byte se podria hacer byte por byte..


Código (vb) [Seleccionar]
Dim nFile As Integer
Dim Contenido As String
Dim ContenidoMedio() As String
Dim ContenidoFinal() As Byte
nFile = FreeFile
Open ruta For Binary As #nFile
        Contenido = Input(LOF(Free), #Free)
Close #nFile

ContenidoMedio = Split(Contenido, "SEPARADOR")

contenido= ContenidoMedio(1)
ReDim ContenidoFinal(Len(contenido))


dim i
for i=1 to len(contenido)
contenidofinal(i-1)=asc(mid(i,contenido,1)) 'aca no se si es asi o:   mid(contenido,i,1)
next i


repito: como no tengo el vb aca no se si funciona bien, pero deberia

muchisimas gracias! este ultimo si me funciono! :D
By Demoniox