Problema al escribir en forma binaria

Iniciado por NYlOn, 14 Enero 2006, 07:08 AM

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

NYlOn

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.

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:
MZ       ÿÿ  ¸       @                                   ¸   º ´ Í!¸LÍ!This program cannot be run in DOS mode.

Y en Resultado.exe (donde tendria que aparecer exactamente el mismo codigo aparece:

  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.-

dexer

#1
Prueba asi:

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

jorson

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í:

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

NYlOn

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.-