Riconoscere il cambiamento



  • Riconoscere il cambiamento
    di Angelus (utente non iscritto) data: 05/02/2011

    Salve sto creando un applicazione che mi visualizzi in tempo reale, in un form sempre attivo, quando viene modificato un file salvato. nel senso visto che questo file viene aggiornato e i tempi non sono regolari il programma mi deve riconoscere quando viene modificato salve e grazie



  • di Mik (utente non iscritto) data: 05/02/2011

    Ciao angelus

    in visual basic esiste un oggetto molto efficente che monitorizza i cambiamenti dei file e farebbe proprio al caso tuo.

    in vba di office non mi sembra di aver visto quell'oggetto (o forse sono io che sono orbo).

    comunque se non vuoi aspettare che qualcuno ti confermi questo, puoi ovviare subito aggiungendo un oggetto "timer" che ogni tot. minuti/secondi controlla se gli attributi di un file sono stati cambiati...

    fammi sapere

    ciao

    ps. me lo sentivo che saresti andato avanti con i progetti



  • di Angelus (utente non iscritto) data: 07/02/2011

    Salve a tutti e ringrazio in particolare mik sempre molto gentile e tempestivo ;), volevo riferirti che hai convetuto con le mie ipotesi anche se un po’ rudi ma efficaci ;) pensavo che esisteva un metodo più raffinato comunque va bene lo stesso . nel formulare l’eseguibile si crea una anomalia che non riesco a risolvere, mi chiedevo se qualcuno mi aiuta ad individuare il problema. il problema è il seguente quando faccio confrontare la differenza tra prima e dopo ( l’oggetto timer è impostato su 1000) mi da come se ogni secondo viene modificato, per controllare i dati che dovrebbero lavorare li ho fatti visualizzare sul form per verificare la correttezza,. come differenza mi da sempre 6 con conseguenza che entra sempre nella rutime, la cosa strana è che la data e i minuti secondi sono sempre li stessi perché rivela una modifica che non esiste, posto il codice per poterlo visionare grazie a tutti
     
    Dim primo As Date
    Dim dopo As Date
    Dim conta As Integer
    
    Private Sub Form_Load()
    
    End Sub
    
    Private Sub Timer1_Timer()
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set file = FSO.GetFile("c:aggiornadatitorneo4")
    dopo = file.datelastmodified
    If dopo > prima Then
    
    Label1.Caption = (Val(dopo) - Val(prima))
    
    
    prima = dopo
    Text1.Text = prima
    conta = conta + 1
    Label1.Caption = ""
    Label1.Caption = conta
    End If
    End Sub
    



  • di Mik (utente non iscritto) data: 08/02/2011

    Angelous, fai caso meglio: hai dichiarato come pubblica la variabile prim(o) e poi la chiamata la fai con prim(a)...è per quello che non va...il resto è ok!



  • di Angelus (utente non iscritto) data: 08/02/2011

    Grrrrrrrrrrrrr. uso sempre nei programmi veri optin explicit ma siccome questo era un programmino da implementare l'ho sorvolato per sbrigarmi senza poi sapere che ci avrei perso molto tempo grrrrrrrrrrrrrrrrrrrrrrrr

    comunque non mi stancherò mai di ringraziarti



  • di Angelus (utente non iscritto) data: 08/02/2011

    Ciao mik non vorrei approfittarmi della tua cortesia ma tu cosa mi consigli visto che quel programmino serve perchè ho un file .html che viene aggiornato ogni tot e fino a qui abbiamo trovato come riconoscere il momento della modifica di un file txt, ma se la dobbiamo attribuire al file html che viene creato uno nuovo con titoli diversi ad ogni sessione? e riportare il file html in un file unico txt?



  • di Angelus (utente non iscritto) data: 08/02/2011

    Mik ho provato così ma mi da errore file nen trovato, basta che la faccio passare con file2 = text2.text e mi genera l'errore se cambio file2 con datitorne4 lo trova cosa sbaglio ?
     
    Dim prima As Date
    Dim dopo As Date
    Dim conta As Integer
    Dim file2 As String
    
    Private Sub Command1_Click()
    file2 = Text2.Text
    
    End Sub
    
    Private Sub Text1_Change()
    prima = dopo
    
    End Sub
    
    
    
    Private Sub Timer1_Timer()
    
    If file2 <> "" Then
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set file = FSO.GetFile("c:aggiornafile2")
    dopo = file.datelastmodified
    If dopo > prima Then
    
    Label1.Caption = (Val(dopo) - Val(prima))
    
    prima = dopo
    Text1.Text = prima
    conta = conta + 1
    Label1.Caption = ""
    Label1.Caption = conta
    End If
    End If
    End Sub
    



  • di Mik (utente non iscritto) data: 09/02/2011

    Ci sono un pò di cose che non mi sono chiare, comunque in text2 devi memorizzare il percoso completo e nome del file (es.: c:documentipippo.txt)

    una cosa...ma non credi che sarebbe il caso di passare a visual basic? ..per le cose che intendi fare è decisamente più completo..



  • di Angelus (utente non iscritto) data: 09/02/2011

    Ciao mik io volevo far passare con la text2.text il completamento del file visto che cambia sempre

    es. text2.text = pippo.exe
    file2 = text2.text
    set file = fso.getfile("c:aggiornafile2")
    non capisco perchè in esecuzione il file2 non cambia in pippo.exe

    scusami ma non ho capito cosa volevi dire

    una cosa...ma non credi che sarebbe il caso di passare a visual basic? ..per le cose che intendi fare è decisamente più completo..



  • di Angelus (utente non iscritto) data: 09/02/2011

    Ciao mik io volevo far passare con la text2.text il completamento del file visto che cambia sempre

    es. text2.text = pippo.exe
    file2 = text2.text
    set file = fso.getfile("c:aggiornafile2")
    non capisco perchè in esecuzione il file2 non cambia in pippo.exe

    scusami ma non ho capito cosa volevi dire

    una cosa...ma non credi che sarebbe il caso di passare a visual basic? ..per le cose che intendi fare è decisamente più completo..



  • di Mik (utente non iscritto) data: 09/02/2011

    Adesso si..file2 è una variabile e non va messa dentro gli apici.
    così:

    ps.: i tuoi progetti pare utizzino solo oggetti forms...
    secondo me a sto punto (se hai possibità) meglio utilizzare visual basic 2010 che offre parecchie risorse in piu rispetto al vba di office.!
     
    set file = fso.getfile("c:aggiorna"+file2)