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
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
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!
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
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
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)
muhisimas gracias x las lineas y x la rapidez a los 2 ;)
un salud0 !!!
G0nz4
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...
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
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
Bueno, antes que todo un millon de gracias por las sugerencias brindadas Dexoline y NYlon... Al menos ahora si debo afirmar que mi Visual esta completamente loco... Es mas o menos como yo lo hacia pero tampoco me funciona, a modo de aprendizaje lo unico que hice fue un boton que salude, con un editor para ingresar el nombre, por ejemplo si en el editor pongo HypNosS entonces que el programa una vez editado diga: Hola HypNosS como estas?
Aca les dejo el codigo entero de este ensayo:
Citar
Private Sub Form_Load()
Dim variable As String * 10
Open App.Path & "\" & App.EXEName & ".exe" For Binary As #2
Get #2, LOF(2) - 10, variable
Close #2
Text1.Text = variable
End Sub
Private Sub Command1_Click()
MsgBox "hola " & Text1.Text & " como estas?"
End Sub
A lo que el programa no deja de devolverme: "Hola como estas?" sin tomar el valor teoricamente portado en la variable y caja de texto respectivamente...
De todos modos me percate que al final de el archivo editado aparezca la cadena de texto que agrego con el editor y efectivamente aparece... Tambien tengo visible la caja de texto para cuando arranca el programa ver si se copio en su contenido la cadena asignada y nada...
Bueno... locuras del visual...
Un saludo y gracias nuevamente.
hola HypNosS
mira son las 4.30 de la mañana y no tengo mucho resto como para analizar el code XD
te dejo un ejemplo tal cual como el que estas intentando hacer (ya l0 tenia echo xD)
son DOS programas diferentes que tienen que estar en el mismo directorio
en el primer ejecutable (que vendria a ser el 'editor' creas 1 TxtBox y 1 CommandButton y pone este
Private Sub Command1_Click()
Dim variable As String * 30
variable = Text1.Text
Open App.Path & "\" & "NYlOn.exe" For Binary As #1 'el programa que vamos a editar deve llamarse NYlOn.exe ;)
Put #1, LOF(1) + 1, variable
Close #1
End Sub
en el otro ejecutable pones el siguiente y lo guardas como NYlOn.exe
Private Sub Form_Load()
Dim var As String * 30
Open App.Path & "\" & App.EXEName & ".exe" For Binary As #2
Get #2, LOF(2) - 30, var
Close #2
Mail = Trim(var) 'esto saca los espacios en blanco que hay en la variable
MsgBox Mail
End Sub
no comento los codigos x no hay ganas XD si te keda alguna duda postea ;)
NOTA: acordate de que los 2 programas esten en el mismo directorio asi funcionan bien
esper0 q se alla entendido bien
un salud0
G0nz4
Private Sub Form_Load()
Dim var As String * 30, Mail as String
Open App.Path & "\" & App.EXEName & ".exe" For Binary As #2
Get #2, LOF(2) - 31, var
Close #2
Mail = Trim(var) 'esto saca los espacios en blanco que hay en la variable
MsgBox Mail
End Sub
Jaaaa
Son una makina lokosss!! Bueno, con este codigo me anduvo, nunca voy a saber porque con mi codigo no andaba pero bueno, no saben cuanto les agradezco la ayuda NYlon, Dexoline y YeIkOs (Aunque parezca mentira, sin tu correccion el programa no funcionaba :D)
Un saludo, voy a continuar con el siguiente obstaculo en mi proyecto xDD
Suerte
no te funcionaba por que no quitabas los espacios de la variable:
Mail = Trim(var) 'esto saca los espacios en blanco que hay en la variable
Y por los errores lo siento, por que es que lo estoy haciendo todo a ciegas ya que no tengo ahora el vb.
Salu2
Cita de: Dexonline en 21 Septiembre 2005, 19:21 PM
no te funcionaba por que no quitabas los espacios de la variable:
Mail = Trim(var) 'esto saca los espacios en blanco que hay en la variable
Y por los errores lo siento, por que es que lo estoy haciendo todo a ciegas ya que no tengo ahora el vb.
Salu2
No es necesario quitar los espacios a la variable para que ésta pueda ser leida.
PD: Yo tampoco tengo el VB en está máquina, por eso me equivoco a veces :P.
si hace falta, por que var es un buffer y Mail es una string y en los textbox, msgbox... solo se pueden usar strings
Salu2
;D
nunca lo habia notado xD
thx ;D