Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132

    [VB6]: confronta, copia file

    Ciao a tutti,
    premetto che non sono assolutamente capace con VB6! avrei bisogno di realizzare un form che, alla pressione di un pulsante, mi controlli se esiste un file "x\pippo" in una directory; se non c'è deve copiarlo da una cartella "y\pippo" sorgente, se invece esiste deve fare un confronto dei due file:"x\pippo" e "y\pippo", se vi sono differenze non deve copiarlo.
    Per la copia del file non c'è problema, ma non sapendo usare bene VB6 non so come confrontare il file!
    Ho cercato un po, ma ho trovato solo esempi di confronto dei testi.

    E' proprio necessario aprire i file per confrontarli?
    non si possono confrontare solo i pesi in Byte?

    ciao grazie
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  2. #2
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    certo che si può! se usi il filesystemobject otterrai una variabile di tipo File che tra le varie proprietà(guarda un pò) ha anche il peso...
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  3. #3
    Credo che due files possano avere lo stesso peso pur essendo diversi.... :master:

    Ciauz

    Chico

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per confrontarli devi leggerli tutti e due e confrontarli byte per byte ...

    Li apri in binario, li leggi in due array che poi confronterai ... (ovviamente i file devono avere la stessa lunghezza in partenza, altrimenti non li confronti ...)

    Non ci sono altre strade se vuoi effettivamente confrontarli ...

  5. #5
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    Originariamente inviato da chico62
    Credo che due files possano avere lo stesso peso pur essendo diversi.... :master:

    Ciauz

    Chico
    E' vero ma ammetterai che è poco probabile... e poi lui diceva
    non si possono confrontare solo i pesi in Byte?
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  6. #6
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132
    Grazie ragazzi ho fatto così:
    codice:
    --------------
    Dim lngDimFile As Long
    Dim lngDimFileOrigine As Long
    Dim xx As Integer
    Dim FileTrovato As String
    Dim strComando As String
    
    strNomeDir = strDirD
    strNomeFile = strFileD
    
    strNomeDirOrigine = strDirO
    strNomeFileOrigine = strFileO
    
    FileTrovato = Dir(strNomeDir & "\" & strNomeFile)
    
    If FileTrovato = "" Or FileTrovato = vbNullString Then
        MsgBox "Cosa faccio quando NON trovo il file"
        FileCopy strNomeDirOrigine & "\" & strNomeFileOrigine, strNomeDir & "\" & strNomeFile
        Call edLogUpdate("Prima copia")
    Else
        MsgBox "Cosa faccio quando trovo il file"
        lngDimFile = FileLen(strNomeDir & "\" & strNomeFile)
        lngDimFileOrigine = FileLen(strNomeDirOrigine & "\" & strNomeFileOrigine)
        If lngDimFile = lngDimFileOrigine Then
            FileCopy strNomeDirOrigine & "\" & strNomeFileOrigine, strNomeDir & "\" & strNomeFile
            Call edLogUpdate("Copia Effettuata")
        Else
            MsgBox "Cosa faccio quando le dimensioni del file sono diverse"
            Call edLogUpdate("NON COPIATO - ATTENZIONE")
         End If
    End If
    
    EsciControlloCopia:
      Exit Sub
    
    ------------
    ma non funziona bene perchè se non cambiano almeno 3 byte non sente la modifica!


    rispetto al check sulla dimensione...
    Originariamente inviato da chico62

    Credo che due files possano avere lo stesso peso pur essendo diversi....

    Ciauz

    Chico
    --------------------------------------------------------------------------
    --------------------------------------------------------------------------
    Originariamente inviato da oregon
    Per confrontarli devi leggerli tutti e due e confrontarli byte per byte ...

    Li apri in binario, li leggi in due array che poi confronterai ... (ovviamente i file devono avere la stessa lunghezza in partenza, altrimenti non li confronti ...)

    Non ci sono altre strade se vuoi effettivamente confrontarli ...
    un confronto i byte effettivamente ha un grosso baco, in quanto secondo la legge dei grandi numeri nonchè quella di murphy, prima o poi a parità di byte il contenuto potrebbe essere diverso!

    un confronto in stream riga per riga di due file comporta sicuramente un grosso impegno della macchina se la dimensione dei file in oggetto è di diversi MB

    secondo voi quale potrebbe essere la soluzione migliore?

    suggerimenti rispetto ad un esempio di "Li apri in binario, li leggi in due array che poi confronterai..."!??!?!
    ciao e grazie
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  7. #7
    dovrebbe esserci una funzione per creare l'hash del file. Dovrebbe essere abbastanza veloce. poi controlli gli hash. In un primo momento ti converrebbe comunque controllare le dimensioni, così da esculdere in primis molti file...
    -----
    101110101011101111100000
    -----

  8. #8
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132
    funzione per creare l'hash del file
    cos'è l'hash di un file?
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  9. #9
    http://it.wikipedia.org/wiki/Hash

    QUI un esempio di hash in vb
    -----
    101110101011101111100000
    -----

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.