Ayuda con ANOTADOR

Iniciado por ka0s, 11 Octubre 2006, 19:58 PM

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

ka0s

Bueno, estoy aprendiendo VB y se me dió por hacer un anotador sencillo.. donde vos tipeas lo que querés guardar y cuando le das al boton guardar el form se hace invisible.. y cuando tocas f12 con la api GetAsyncKeyState  aparezca en otro FORM lo que hayas escrito antes...
Hasta ahí me funciona todo perfecto, mi problema es que como en un anotador, vas anotando cosas lo hice el archivo que sea APPEND y entonces cuando toco F12 para que me muestra lo que guarde a la 2da vez que toco F12 me lo muestra 2 veces repetidas lo que guardé antes y solamente quiero que me muestre lo último que guarde.. :S.. a ver si alguien me da una idea o algo.. si no entendieron avisen $:

Salu2!

PD: Y obviamente OUTPUT no puede ser porque yo quiero que siempre que se abra el programa recuerde todo lo que se guardo :S... sino funcionaría perfecto :(

<--v1c1ous-->

No decis como es exactamente.

Pero estas usando APPEND e imagino que cargas todo el contenido del archivo a un Textbox y despues lo volves a guardar con APPEND, ontonces siempre estan guardando lo que alla en el archivo mas lo que hay en el Textbox.

Simplemente o no uses APPEND o no cargues todo en el Textbox.


ka0s

:S exactamente, hago eso.. pero si no uso APPEND que uso?? ... OUTPUT no puede ser porque yo quiero que recuerde siempre, no solamente cuadno está ejecutado el programa...
:S :S :S


Salu2!

<--v1c1ous-->

En vez de anexar al archivo de texto podes sobreescrivirlo asi:

CitarDim Buff as String
Buff = Text1.text

Open FILE For Binary Access Write As #1
Put #1, , Buff
Close #1

Lo hice en binario pero podes hacerlo como quieras, busca en google Tratamiento de ficheros en VB


ka0s

#4
buuuuuu, me funcionaba perfectamente NO COMPILADO... lo COMPILE y se cagó anda como antes :S :S :S :(
me quiero matar!!!!!!

a ver si alguien sabe pq ocurre eso :S

------------------------------------------------------------------
Acá les dejo todo...

FORM1

CitarOption Explicit

Private Sub cmdguardar_Click()
Dim renglon As String
Dim archivo As String
Dim info As String
info = txtdatos.Text
archivo = "C:\datos.txt"
'Abre el archivo y almacena lo que tiene txtdatos
Open archivo For Append As #1
Print #1, " " + ">>>" + " " + ""; Format(Time, "hh:mm") + "||" + " " + Format(Now, "dd-mm-yy") + "||" + " " + info
Close #1
txtdatos.Text = ""
Form1.Visible = False
End Sub

Private Sub Form_Load()
Dim archivo As String
On Error GoTo Fallo
archivo = GetAttr("C:\datos.txt")
Fallo:
Open "C:\datos.txt" For Append As #1
Close #1
End Sub

Private Sub Form_Resize()
txtdatos.Width = Me.ScaleWidth
End Sub


Private Sub Timer1_Timer()
If GetKeyState(vbKeyF12) < 0 Then
    Form2.Visible = True
End If
End Sub

FORM2
Citar
Private Sub cmdvolver_Click()
Form2.Visible = False
Form1.Visible = True
End Sub

Private Sub Form_Activate()
Dim renglon As String
Dim archivo As String
archivo = "C:\datos.txt"
'Carga lo que haya almacenado cuando se cargue el form.
Open archivo For Input As #1
Do While Not EOF(1)
    Line Input #1, renglon
    txtdatos.Text = txtdatos.Text + renglon + vbCrLf
Loop
Close #1
End Sub

Y acá imágenes de lo que me pasa por si no entendieron
Este es el form 1, ingreso texto, toco escape y se oculta!



Cuando toco F12 se carga el FORM2 con lo que ingresé en el FORM1, hasta ahi todo perfecto!



Pero al tocar el BOTON VOLVER que vuelve al FORM1 para ingresar otro dato y luego de tocar escape y luego F12 para que cargue nuevamente ME PONE 2 VECES LO MISMO EN EL ANOTADOR PORQUE VUELVE A ABRIR EL ARCHIVO.. y ese es mi problema que no vuelva a repetir lo que ya esta :S...



Espero que ahora si me hayan entendido mejor.. desde ya muchas gracias...

PD: También tengo un módulo que solo contiene la API GetKeyState...

Salu2!

ka0s

Por favor.. nadie sabe? :S :S
Sorry por postear de nuevo :S :S es para revivir el post ...

Gracias nuevamente!

<--v1c1ous-->

Arreglo tu problema:

CitarPrivate Sub cmdvolver_Click()
Form2.Visible = False
Form1.Visible = True
End Sub

Private Sub Form_Activate()
Dim renglon As String
Dim archivo As String
txtdatos.Text = ""
archivo = "C:\datos.txt"
Open archivo For Input As #1
Do While Not EOF(1)
    Line Input #1, renglon
    txtdatos.Text = txtdatos.Text + renglon + vbCrLf
Loop
Close #1
End Sub


Codigo mas limpio:

Citar
Private Sub cmdvolver_Click()
Form2.Hide
Form1.Show
End Sub

Private Sub Form_load()
Dim Buff As String

txtdatos.Text = ""

Open "C:\datos.txt" For Binary Access Read As #1
Buff = Space(LOF(1))
Get #1, , Buff
Close #1

txtdatos.Text = Buff
End Sub

:)


ka0s

Gracias man por responder ahora sí anda perfectamente.. tenía que poner el txtdatos.text = ""  en el Activate...
Ahora funciona perfecto, y voy a tratar de mejorar esta porquería xD gracias y disculpa si te jodi por MP $:

Salu2!