Forum: Object-Pascal / Delphi-Language
by himitsu,
29. Mär 2012
Da mußt du immer etwas aufpassen.
crc ist 32 Bit und Boolean nur 8 Bit.
Falls Delphi hier keine Compilermagic versteckt hat, welche das Boolean logisch castet, anstatt es binär zu casten,
dann könnte es eventuell Probleme mit sowas geben, denn LongBool($FFFFFF00) <> Boolean($FFFFFF00).
Aber zum Glück gibt es hier noch das and 1, so daß in diesem Fall am Ende die oberen Bytes eh wegfallen.
Forum: Object-Pascal / Delphi-Language
by himitsu,
29. Mär 2012
const
v: Array of Word = (0, $A001); // mit Komma, nicht daß sich wer beschwert es funktioniere nicht.
begin
...
crc := (crc shr 1) xor v; // <>0 , denn Delphi gibt es keine automatische Ordinal-Boolean-Konvertierung
crc := (crc shr 1) xor IfThen(crc and 1 <> 0, 0xA001, 0);
crc := (crc shr 1) xor IfThen(Odd(crc), 0xA001, 0);
end;
Eine syntaktisch korrekte Übersetzung gibt es...