Split auf die '-' und dann mit
StrToInt('$' + 'FF')
oder das Minus weglassen und rückzu alle 2 Chars splitten
oder, wenn man es dann schon "zusammen" hat,
einfach gemeinsam mit
BinToHex und
HexToBin in/von einen String
oder "modernere" Streaming-Klassen ala TNetEncoding.Base64.EncodeBytesToString
oder ...
Und an gewisse neuere Features kann man sich auch gewöhnen.
MessageToSend := [$81, $01, $04, $3F, $02, $01, $FF];
PS: Ich würde dir mal ein
ReportMemoryLeaksOnShutdown := True;
anraten, aber dann nicht erschrecken, falls das "grob" nicht zu viel weg ließ.