Mit Chr und String währe ich aber vorsichtig. Die Umwandlung aus deiner Bytefolge etwas ganz anderes machen als erwartet.
Hier währe TBytes als Buffer(für die zu übertragene Bytefolge) und eine Funktion die direkt eine Bytefolge überträgt sinnvoller.
Wenn es hier wirklich um Delphi 7 geht, ist das vermutlich nur halb so schlimm. Da würde es dann auch kein
TBytes geben.
Und sollte dies
function BuildCommand(ACommand: Byte; AData: const array of Byte): TBytes;
nicht eher so aussehen?
function BuildCommand(ACommand: Byte; const AData: array of Byte): TBytes;