Ich musste neulich auch einmal die Endianess von einem Word ändern, habe mich aber vor System.Swap(..) gefürchtet: Die Doku spricht von Word (2Byte), die Signatur von einem Integer (4Byte).
Echte Delphi-Graurücken schütteln sich da wahrscheinlich das passende Assembler-Kommando aus dem Ärmel, aber ich habe mir (manch einer wird wohl lachen) den hier gemacht:
Delphi-Quellcode:
TWordHelper = record helper for System.Word
/// <summary>
/// Vertauscht beide Bytes
/// </summary>
public procedure flipEndianess();
end;
procedure TWordHelper.flipEndianess();
var
firstBytePtr, secondBytePtr: PByte;
firstByteValue: Byte;
begin
firstBytePtr := Addr(self);
secondBytePtr := firstBytePtr + 1;
firstByteValue := firstBytePtr^;
firstBytePtr^ := secondBytePtr^;
secondBytePtr^ := firstByteValue;
end;
Weil ich sonst einfach nichts besseres gefunden habe. Eigentlich sollte so etwas in den Helferklassen für simple Typen drinstecken. Finde ich.