Open For Binary

Iniciado por NYlOn, 18 Septiembre 2005, 19:58 PM

0 Miembros y 2 Visitantes están viendo este tema.

NYlOn

hola a todos
buen0 mi problema es el siguiente:
estoy intentando hacer una especie de 'Edit Server'...
para escribir el archivo uso el siguiente


   Open "C:\Hola.exe" For Binary As #1
       Put #1, LOF(1) + 1, Text1.Text
   Close #1


el problema aparece cuando trato de LEER el archivo ... la verdad no se como hacerlo, buske en el foro y en google pero no encuentro ningun metodo que me de resultad0 :S

si alguien sabe como hacerlo estaria muy agradecido de que me lo digiera :)

un salud0 a t02

G0nz4

EDIT:
el codigo que estoy tratando de usar para leer es este:

    Dim var As String
    Open "C:\Hola.exe" For Binary As #1
     Get #1, LOF(1) - 20, var
   Close #1
   Text2.Text = var

yeikos

#1
Dim variable as String * 20
variable = Text1.Text
Open "C:\Hola.exe" For Binary As #1
    Put #1, LOF(1) + 1, variable
Close #1

Dim var As String * 20
Open "C:\Hola.exe" For Binary As #2
    Get #2, LOF(2) - 21, var
Close #2
Text2.Text = var

Kizar

El codigo de yeicos es muy parecido al que iba a poner yo, pero estoy seguro de que tambien funciona bien, y añadir que tal y como esta en el textbox solo se podrian escribir 20 caracteres, si escribes menos quedarian espacios en blanco que no pasa nada.

Y otra cosa, si abres el exe con el block de notas veras al final el texto k as escrito, te aconsejo que uses alguna funcion para encriptarlo como por ejemplo.


Function Cypher(Str As Variant) As String   'Función que cifra una cadena
Dim Temp As String, PwdChr As Integer
Dim EncryptKey As Integer
    EncryptKey = Int(Sqr(Len(Str) * 100)) + 200
For PwdChr = 1 To Len(Str)
    Temp = Temp + Chr(Asc(Mid(Str, PwdChr, 1)) Xor EncryptKey)
Next PwdChr
    Cypher = Temp
End Function



Es muy facil de usar pero tienes que usarla al escribir y al leer los datos por ejemplo:


variable = Cypher(Text1.Text)

Text2.Text = Cypher(var)


Esta claro que e modificado el codigo de yeikos
Salu2 ejoy it!

NYlOn

Cita de: YeIk0s en 18 Septiembre 2005, 21:06 PM
Dim variable as String * 20
variable = Text1.Text
Open "C:\Hola.exe" For Binary As #1
    Put #1, LOF(1) + 1, variable
Close #1

Dim var As String * 20
Open "C:\Hola.exe" For Binary As #2
    Get #2, LOF(2) - 21, var
Close #2
Text2.Text = var


te falto es0 ;)

gracias x todo

Salu2

NYlOn

che y hay alguna forma de eliminar los espacios restantes del final ?? ya que no se cuantos valores se van a introducir exactamente :S

desde ya muchas gracias

G0nz4

yeikos

Cita de: NYlOn en 18 Septiembre 2005, 21:37 PM
che y hay alguna forma de eliminar los espacios restantes del final ?? ya que no se cuantos valores se van a introducir exactamente :S

desde ya muchas gracias

G0nz4

Trim(variable)

NYlOn

muhisimas gracias x las lineas y x la rapidez a los 2 ;)

un salud0 !!!

G0nz4

Simbelmynë

A ver veamos que yo tambien hace mucho estoy con esto y no termino de entender una cosa que debe ser muy facil visto que todo el mundo la entiende y el unico que no la ve soy yo:
Estariamos haciendo un editor, para lo que sea, al cual hay que agregarle datos en el final de el archivo:

Citar
Dim variable as String * 20
variable = Text1.Text
Open "C:\Hola.exe" For Binary As #1
    Put #1, LOF(1) + 1, variable
Close #1

Hasta ahi perfecto, nuestro editor abre el archivo a editar, le agrega la informacion necesaria al final del archivo y lo cierra, perfecto, ya tenemos la informacion que necesitabamos dentro de el archivo editado...
Ahora:

Citar
Dim var As String * 20
Open "C:\Hola.exe" For Binary As #2
    Get #2, LOF(2) - 21, var
Close #2
Text2.Text = var

Este codigo donde iria?? Supongo yo que en archivo ya editado, teniendo en cuenta que mismo trabajara solo y no podra tomar datos de otro archivo, no? Pero de seguir esta logica, a mi no me funciona...
En resumidas sintesis: ¿Como hace el archivo editado para utlizar la informacion que se le agrego con el editor, ubicandola donde la necesita?
Bueno, solamente eso, agradeceria mucho que alguien me saque de esta incertidumbre...
Un saludo y gracias...

Kizar

en el servidor editado pones en el form_load:


Dim var As String * 20
dim var1 as string
Dim Str1 As String
Dim Str2 As String

Open app.pach & "\" & app.exename For Binary As #2
    Get #2, LOF(2) - 20, var
Close #2

Str1 = InStr(1, var, " ")
Str2 = Left(var, Str1 - 1)
text1.text = Str2

NYlOn

falto un detalle: la propiedad "EXEName" te devuelve solo el nombre, no la extensión, x lo que no te abriria el archivo...
solo tenes que cambiar este

Open app.pach & "\" & app.exename For Binary As #2


por este

Open app.pach & "\" & app.exename & ".exe" For Binary As #2


un salud0 ;)

G0nz4