vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Für Superprofis (inc. Dieter und Lordchen) 
Autor: unbekannt
Datum: 22.10.02 17:25

Hi Christian,

dazu wird ein Checksummer verwendet. Ein berühmter davon ist der CRC32-Algorythmus. In der VBEx32.DLL ist ein Filechecksummer implementiert. Wie der funktioniert, da habe ich einmal ein Beispiel in VB gesehen, das allerdings auch mit Assembler im Hintergrund arbeitete.

Wir haben den Code so implementiert:

' Function 127
' VBFILECRC32 *********( nicht geändert )*************
FUNCTION VBFILECRC32 ALIAS "VBFILECRC32" (QuellFile AS ASCIIZ PTR) EXPORT AS _
  LONG
    DIM a AS LONG, b AS BYTE,e AS BYTE
    DIM d AS STRING
    DIM y AS LONG
    DIM nCRC AS LONG, c AS LONG, n AS LONG,x AS LONG, i AS LONG, m AS LONG
    DIM f AS INTEGER
    DIM xi AS BYTE
    DIM sQuellFile AS STRING
 
    sQuellFile=TRIM$(@QuellFile)
 
    f = FREEFILE
    ON ERROR RESUME NEXT
    IF DIR$(sQuellFile) = "" THEN EXIT FUNCTION
    IF ERR>0 THEN EXIT FUNCTION
    OPEN sQuellFile FOR BINARY AS #f
    x = LOF(f)
    m = x\65535
    n = 65535
    FOR i=1 TO m
       GET$ #f,n,d
       GOSUB Loop0
    NEXT
    n = x MOD 65535
    IF n>0 THEN
       GET$ #f,n,d
       GOSUB Loop0
    END IF
    CLOSE #f
    IF nCrC < 0 THEN nCrC = nCrC+&H10000
    FUNCTION = nCRC
    EXIT FUNCTION
'********************* ( Inline Assembler ) ************************
    Loop0:
    ! Mov  a,&Hff           ;Setze acht Bits in a
    ! Mov  Ecx,8            ;Zähler initialisieren
Loop1:
    ! Mov  b,0              ;Initialisiere b mit 0
    ! Mov  e,0              ;Initialisiere e mit 0
    ! Mov  Eax, nCRC        ;nCRC in Register laden
    ! And  Eax,32768        ;32768 And
    ! Cmp  Eax,32768        ;Vergleiche Eax
    ! Jne  Weiter0          ;Überspringe nächste Zeile wenn ungleich
    ! Mov  b,1              ;Setze b auf logisch 1
Weiter0:
    ! Mov  Edx,d            ;StringPtr nach Edx
    ! Mov  Ebx,c            ;Counter nach Ebx
    ! Mov  Eax,[Edx+Ebx]    ;Wert aus Speicher nach Eax
    ! Mov  Ebx,0            ;Initialisiere Ebx
    ! Shr  a,1              ;Division um binär ^2
    ! Mov  Ebx,a            ;Wert a auf bl
    ! Inc  Ebx              ;Addiere 1
    ! And  Eax,Ebx          ;And mit Wert aus Ebx
    ! Cmp  Eax,Ebx          ;Vergleiche Eax,Ebx
    ! Jne  Weiter1          ;Überspringe nächste Zeile wenn ungleich
    ! Mov  e,1              ;Setze e auf logisch 1
Weiter1:
    ! Mov  Eax,nCRC         ;setze nCRC nach Eax
    ! AND  Eax,32767        ;32767 And
    ! Shl  Eax,1            ;Multipliziere Eax mit 2
    ! Mov  nCRC,Eax         ;speichere Ergebnis in nCRC
    ! Mov  Al,b             ;Wert aus b nach Al
    ! Mov  Ah,e             ;Wert von e nach Ah
    ! Cmp  al,ah            ;Vergleiche b mit e
    ! Je   Weiter2          ;Springe wenn gleich XOR = true
    ! Mov  Eax,nCRC         ;setze nCRC nach Eax
    ! Xor  Eax,&H8005       ;&H8005 XOR
    ! Mov  nCRC,Eax         ;Speichere Ergebnis in nCRC
Weiter2:
    ! Dec  Ecx              ;Vermindere counter um 1
    ! cmp  Ecx,0            ;ist Counter 0?
    ! Jne  Loop1            ;nein, dann Springe zu Loop1
    ! Inc  c                ;Addiere in c c=c+1
    ! Mov  Eax,c
    ! Mov  Ebx,n
    ! Cmp  Eax,Ebx
    ! Jne  Loop0
 
    c=0
    RETURN
END FUNCTION
' *****************************************************************************
' **
0
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Für Superprofis (inc. Dieter und Lordchen)263Christian Neuß22.10.02 16:41
Re: Für Superprofis (inc. Dieter und Lordchen)388unbekannt22.10.02 17:25
Re: Für Superprofis (inc. Dieter und Lordchen)113Christian Neuß22.10.02 17:31
Re: Für Superprofis (inc. Dieter und Lordchen)367unbekannt22.10.02 17:49
Re: Für Superprofis (inc. Dieter und Lordchen)377dbayer22.10.02 18:38
Re: Für Superprofis (inc. Dieter und Lordchen)296unbekannt22.10.02 18:53
Re: Für Superprofis (inc. Dieter und Lordchen)307dbayer22.10.02 19:17
Re: Für Superprofis (inc. Dieter und Lordchen)317unbekannt22.10.02 19:40
Re: Für Superprofis (inc. Dieter und Lordchen)309dbayer22.10.02 17:42
Re: Für Superprofis (inc. Dieter und Lordchen)81Christian Neuß24.10.02 13:18
Re: Für Superprofis (inc. Dieter und Lordchen)294dbayer24.10.02 14:36
Re: Für Superprofis (inc. Dieter und Lordchen)75Christian Neuß24.10.02 15:08
Re: Für Superprofis (inc. Dieter und Lordchen)291dbayer24.10.02 15:50
Re: Für Superprofis (inc. Dieter und Lordchen)284unbekannt24.10.02 17:57

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel