Die Routine von Klaus versagt bei Strings mit einer Länge von weniger als 2 Zeichen:
Delphi-Quellcode:
Function CheckSum (Const aString : String) : String;
Var
i : Integer;
Begin
If Length (aString)=0 Then
r := 0
Else Begin
r := Ord (aString[1]);
For i:=2 To Length (aString) Do
r := r xor Ord (aString[i]);
End;
Result := IntToHex (r,2);
End;
Auch wenn der Fall bei Dir vielleicht nicht auftritt, irgendwann willst du die Routine vielleicht nochmal verwenden, und spätestens dann hast Du vergessen, das sie nicht uneingeschränkt funktioniert.
Ich implementiere solche Basisfunktionen immer so, das sie immer zu einem Ergebnis führen. Dann bin ich auf der sicheren Seite und ich habe mindestens einen Fehler weniger
@Klaus01: Übergebe einfach das gesamte Telegram (ab dem <STX>), dann wird doch auch die komplette checksum gebildet.
Bist du Dir Sicher, das Du die Checksumme in Hex brauchst?