![]() |
Re: CRC32 mit DEC erzeugt stimmt nicht?
Zitat:
Delphi-Quellcode:
procedure CRCTab;
asm // Polynom Bits InitVec FinitVec Inverse DD $000000D1, 8, $00000000, $00000000, -1 // CRC_8 GSM/ERR DD $00000233, 10, $00000000, $00000000, -1 // CRC_10 ATM/OAM Cell DD $0000080F, 12, $00000000, $00000000, -1 // CRC_12 DD $00008005, 16, $00000000, $00000000, -1 // CRC_16 ARC,IBM DD $00001021, 16, $00001D0F, $00000000, 0 // CRC_16 CCITT ITU DD $00008408, 16, $00000000, $00000000, -1 // CRC_16 XModem DD $00864CFB, 24, $00B704CE, $00000000, 0 // CRC_24 DD $9DB11213, 32, $FFFFFFFF, $FFFFFFFF, -1 // CRC_32 DD $04C11DB7, 32, $FFFFFFFF, $FFFFFFFF, -1 // CRC_32CCITT DD $04C11DB7, 32, $FFFFFFFF, $00000000, -1 // CRC_32ZModem |
Re: CRC32 mit DEC erzeugt stimmt nicht?
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
ergibt korrekter Weise $CBF43926.
CRCCalc(CRC_32CCITT, '123456789', 9)
Delphi-Quellcode:
ergibt ebenfalls $CBF43926 wenn die Datei wirklich nur 123456789 enthält.
FS := TFileStream.Create('c:\test.txt', fmOpenRead);
try WriteLn(IntToHex(CRCCalcEx(CRC_32CCITT, FS.Read), 8)); finally FS.Free; end; Gruß Hagen |
AW: CRC32 mit DEC erzeugt stimmt nicht?
Hallo,
Ich muss diesen Thread nochmal auspacken. Und zwar hab ich das Problem, dass das DEC 5.1 und 5.2 mir unterschiedliche CRC32-Werte bei gleichem Code liefern. Benutze ich die CRC_157.pas von Hagen über mir, stimmt der CRC32 wert, nehm ich die CRC.pas ausm aktuellen DEC 5.2 Part I erhalte ich einen falschen Wert. Kann mir das jemand erklären? Ich benutze Delphi 2010 Professional.
Delphi-Quellcode:
Wie gesagt, mit der CRC.pas vom DEC 5.1 kommt der korrekte Wert raus, beim 5.2er nicht :|
CRCInitThreadSafe;
function CheckCRC32(const AStream: TStream; TargetCRC32: string; out FileCRC32: string): Boolean; var NumericCRC: Cardinal; begin try NumericCRC := CRCCalcEx(CRC_32CCITT, AStream.Read); FileCRC32 := IntToHex(NumericCRC, 2); Result := CompareText(TargetCRC32, FileCRC32) = 0; except Result := False; end; end; Ich benutzt CRCInitThreadSafe, da ich die Berechnung später über die OTL parallelisieren möchte. |
AW: CRC32 mit DEC erzeugt stimmt nicht?
schon mal den source von version 5.1 zu 5.2 auf unterschiede geprüft?
|
AW: CRC32 mit DEC erzeugt stimmt nicht?
Hallo H4ndy,
bitte prüfe, ob Du die gefixte Version von 17.12.2008 hast. Diese liegt bei Luckie: ![]() Diese und ähnliche Zeilen mußt Du (mehrfach) im Source von CRC.pas finden können:
Delphi-Quellcode:
Bis auf diesen Fix für C++ Builder und Source Code Formatierung habe ich nichts (!) im Code von CRC.pas zwischen DEC 5.1 und DEC 5.2 geändert.
{$IFOPT O-}{$O+}{$DEFINE NoOpt}{$ENDIF}
Ich habe die 5.2 selbst unter 2009 im Einsatz gehabt und nutze sie nun produktiv mit Delphi 2010. Ich kann o.g. Problem nicht nachvollziehen - die CRCs stimmen. Die Rocksoft Paramter müssen ggf. zwischen DEC 3 und DEC 5.x angepasst werden, aber das ist ja hier nicht der Fall. Vergleichst Du vielleicht Ansi & Unicode Daten? :glaskugel: Dann muß jetzt etwas anderes rauskommen. Gruß, Assertor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz