Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: CRC16 Problem mit Input ASCII/Hex

  Alt 9. Apr 2018, 16:00
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. Delphi-Referenz durchsuchenHexToBin 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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Apr 2018 um 16:08 Uhr)
  Mit Zitat antworten Zitat