Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: NYlOn en 14 Enero 2006, 07:08 am



Título: Problema al escribir en forma binaria
Publicado por: NYlOn en 14 Enero 2006, 07:08 am
Hola a todos, posteo porque necesito ayuda con un tema.
Cuando escribo en forma binaria un nuevo archivo, este se copia con 4 caracteres en la cabecera, que no son del archivo original, por consiguiente mi archivo no se abre.

Aca posteo un codigo, aclaro que no es exactamente lo que deseo hacer, es solo un ejemplo que muestra el problema de forma mas concreta. Espero que alguien me pueda ayudar.
Código:
Private Sub Form_Load()

    Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1
        Yo = Input(LOF(1), 1)
    Close #1
   
    Open "C:\Resultado.exe" For Binary As #2
        Put #2, , Yo
    Close #2
   
    End

End Sub

Cuando abro con el bloc de notas el archivo orignial en la primera linea aparece esto:
Código:
MZ       ˙˙  ¸       @                                   ¸   ş ´ Í!¸LÍ!This program cannot be run in DOS mode.

Y en Resultado.exe (donde tendria que aparecer exactamente el mismo codigo aparece:
Código:
  PMZ       ˙˙  ¸       @                                   ¸   ş ´ Í!¸LÍ!This program cannot be run in DOS mode.

Si se fijan bien, van a notar que los 4 primeros caracteres del archivo Resultado.exe son '  P' y los del original son 'MZ '. Sospecho que es por esto que no me ejecuta el Resultado.exe.


Repito, no es esto exactamente lo que quiero hacer (no digan que use FileCopy y eso porque mi objetivo no es copiar el mismo archivo, solo pongo este codigo para detallar bien donde me aparece el error).

Desde ya, muchisimas gracias por leer mis post, y si podes ayudarme, mejor ;).

Saludos.-


Título: Re: Problema al escribir en forma binaria
Publicado por: dexer en 14 Enero 2006, 12:05 pm
Prueba asi:

Código:
Private Sub Form_Load()
Dim Yo As string
    Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1
        Yo = Space(Lof(1))
         Get #1 , , Yo
    Close #1
   
    Open "C:\Resultado.exe" For Binary As #2
        Put #2, , Yo
    Close #2
   
    End

End Sub

Saludos


Título: Re: Problema al escribir en forma binaria
Publicado por: jorson en 14 Enero 2006, 13:52 pm
Tu fallo como corrigio dexer, era que siempre que escribas con put,  tienes que leee con get y viceversa.

De todas formas si lo que quieres es copiar la aplicacion a otra direcion lo puedes hacer así:

Código:
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile App.Path & "\" & App.EXEName & ".exe", "C:\Resultado.exe"


Título: Re: Problema al escribir en forma binaria
Publicado por: NYlOn en 14 Enero 2006, 17:05 pm
Ya prove y es lo mismo. Aclaro que cuando obtengo la variable Yo con el contenido del exe orignal, esta sale SIN los caracteres de más. Por eso deduzco que los primero 4 caracteres se agregan cuando vuelco esa informacion al nuevo archivo.

La verdad que me tiene confundido este asunto...

Un slaudo y gracias por contestar.-