| |

Fortgeschrittene ProgrammierungRe: Hier der Code | |  | Autor: unbekannt | Datum: 24.04.03 22:03 |
| Hi Lonely,
na ganz so stimmt der Vergleich mit der großen Reisetasche und dem Rucksack nicht
Ein Denkanstoss ist die CRC32-Assembler - Routine der VBEx32.DLL:
6
' VBCRC32 ***********( nicht geändert )**********
FUNCTION VBCRC32 ALIAS "VBCRC32" (sQuelle AS STRING) EXPORT AS LONG
DIM a AS LONG, b AS BYTE,e AS BYTE
DIM d AS STRING
DIM nCRC AS LONG, c AS LONG, n AS LONG
d = sQuelle
n = LEN(sQuelle)
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 Eax,0 ;Initialisiere Eax
! 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
IF nCrC < 0 THEN nCrC = nCrC+&H10000 ' <----------- Korrekturfaktor!
FUNCTION = nCrC
END FUNCTION
' *******************************************************************************
Den Korrekturfaktor eben auf einen 16Bitter umsetzen - geholfen? 0 |  |
 | 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 |
  |
|
sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|