Thema: Delphi Bytes im Word drehen

Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Bytes im Word drehen

  Alt 24. Nov 2014, 15:24
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.
  Mit Zitat antworten Zitat