Newsgroup: it.comp.lang.visual-basic
Titolo: Lettura e confronto fra variabili tipo Byte

Salve a tutti. Dovendo confrontare 2 file in modo binario, vorrei sapere
come se l'esempio sottoriportato e' corretto, ed inoltre come faccio a
vedere il contenuto della variabile di tipo byte estratta con la GET (es.
"00110101").
Vi ringrazio in anticipo per l'eventuale aiuto.
Dim i As Integer, A As String, B As String
ReDim Rarray1(1) As Byte, Rarray2(1) As Byte
A = "Pippo1.jpg"
B = "Pippo2.jpg"
Open A For Binary As #1
Open B For Binary As #2
For i = 1 To LunghezzaFile
    Get #1, i, Rarray1
    Get #2, i, Rarray2
    If rarray1(0) = Rarray2(0) Then Print "Errore nel confronto fra i files"
Next i
--
Ciao
Roberto
Email:
robert...@tiscalinet.it


3) ricorda di chiudere i file
Se definisci correttamente LunghezzaFile, non dovresti avere problemi.
Ciao
Alberto

Ciao,
e' vero, ho fatto degli errori banali, ma il problema e' che mi da sempre
uguali Rarray1(0) e Rarray2(0) anche se i files sono diversi. Perche'? Ecco
perche' voglio vederne il contenuto, per vedere cioe' dove sbaglio. Grazie
infinite.
Dim i As Long, A As String, B As String
ReDim Rarray1(1) As Byte, Rarray2(1) As Byte
A = "Pippo1.jpg"
B = "Pippo2.jpg"
Open A For Binary As #1
Open B For Binary As #2
For i = 1 To LunghezzaFile
    Get #1, i, Rarray1
    Get #2, i, Rarray2
    If rarray1(0) <> Rarray2(0) Then Print "Errore nel confronto fra i
files"



Copy and Paste dal mio IDE, dove funziona perfettamente (ho ovviamente
trascurato Lunghezzafile)
Ho provato con file diversi, e mi dice che sono diversi.
Ho messo due file uguali, e non mi dice niente, per cui ritengo che
funzioni.
Private Sub Command1_Click()
Dim i As Long, A As String, B As String
ReDim rarray1(1) As Byte, Rarray2(1) As Byte
A = "c:\Pippo1.jpg"
B = "c:\Pippo2.jpg"
Open A For Binary As #1
Open B For Binary As #2
For i = 1 To 100000
    Get #1, i, rarray1
    Get #2, i, Rarray2
    If rarray1(0) <> Rarray2(0) Then Print "Errore nel confronto fra i
files"
Next i
End Sub
Ciao

Grazie Alberto,
ora faccio le prove. Se ho problemi mi faccio sentire.


 uguali Rarray1(0) e Rarray2(0) anche se i files sono diversi. Perche'?
Perchè
Rarray1(0) è solo il primo byte che sicuramente sarà sempre uguale al primo
di un'altro jpg.
Dovrebbe funzionare anche (ed essere più veloce) una lettura dei due array
completa, anzichè un for byte a byte e confrontare gli array (non il primo
elemento! :)) con StrComp().
Gli array dinamici di byte possono essere trattati come stringhe.
L'unico problema potrebbe sorgere con jpg di grosse dimensioni (2/300k in
su), eventualmente potresti leggere il file a blocchi di 10k.
Ciao

Il fatto che le funzioni di VB vi consentano di scrivere un brutto codice
non e' una scusante per scrivere del brutto codice :P
Private Sub cmdCompareFiles_Click()
    Dim I As Long
    Dim A As String, B As String
    Dim fA As Integer, fB As Integer
    Dim abA() As Byte, abB() As Byte
    ' Sostituire con chiamate a dialog
    A = "c:\Pippo1.jpg"
    B = "c:\Pippo2.jpg"
    ' Sostituire con chiamate a dialog /
    fA = FreeFile
    Open A For Binary As #fA
    fB = FreeFile
    Open B For Binary As #fB
    If LOF(A) <> LOF(B)
            MsgBox ("I files hanno dimensioni diverse", vbExclamation)
    Else
        ReDim abA(LOF(fA))
        ReDim abB(LOF(fB))
        Get #fA, , abA
        Get #fB, , abB
        For i = 0 To UBound(abA)
            If abA(I) <> abB(I) Then
                MsgBox ("Errore nel confronto fra i files", vbExclamation)
                Exit For
            End If
        Next i
    End If
    Close fA
    Close fB
 End Sub
Ciaotutti,
*


Questo pero' l'ho lasciato come esercizio per casa :P
Ciaotutti,
*

 ha scritto nel messaggio
news:v27a8.4898$Jo.1...@twister2.libero.it...

Scusa un attimo, non ti conviene fare cosě:
dim strF1 as string, srtF2 as string,A as string, B as string
A="Pippo.jpg"
B="Pluto.jpg"
Open A for binary as #1
open b for binary as #2
if lof(1)<>lof(2) then msgbox("Sono diversi"):unload me 'O quello che vuoi
strf1=SPACE$(LOF(1))
strf2=strf1
get #1,,strf1
get #2,,strf2
if strf1=strf2 then msgbox "Uguali" else msgbox "Diversi"
close #1
close #2
L'ho fatto al momento, ma dovrebbe andare
Ciao
--
Timothy Redaelli

Grazie a tutti voi e, scusatemi per il codice di non altissimo livello.
