Wieso liefert deine Funktion immer Result als 0?
> Eine Prozedur oder den CRC als Result.
Wieso ist dein Wert 32 Bit (Int32) und keine 16 Bit?
Und vor allem:
Warum wird Value bzw. crc nirgendwo initialisiert?
Zitat:
for i:=0 to Length(Command) do
Schalte in deinen Projektoptionen mal die Indexprüfung an und frage dich, ob die 0 wirklich stimmt.
Ich würde Command[i] vor der inneren Schleife in eine Variable (Byte) kopieren und dann damit arbeiten, anstatt Command zu verändern.
Und da es immer nur
ASCII EASCII bzw.
ANSI ist, würde ich auch einen AnsiString als Parameter verwenden.
Zitat:
Jetzt will ich das ganze aber als Hex eingeben, da ich das Ergebnis 0xFD9C
Dann mußt du eben vorher den String "020D000A413068656C6C6F" als HEX betrachten, also erstmal jeweils zwei Zeichen in ein Char konvertieren.
Manuell (selber Zeichen für zeichen)
oder z.B.
HexToBin in einen AnsiString passender Länge.
Oder noch einen Parameter isHEX in deine Funktion/Prozedur
und dann statt ein Zeichen zu nehmen (Ord), jeweils zwei Zeichen nehmen, sie von Hex nach Byte umwandeln und dann damit den CRC berechnen.