Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Bytes auf ein Integer auffädeln

  Alt 7. Sep 2018, 10:06
Hallo Zusammen,

Die Methode mit dem packed record gefällt mit sehr gut.
Das Ergebnis von Test1 und Test2 sind identisch.
Ich finde Test1 ist schöner zu lesen.

Eigentlich habe ich gehofft es gibt so etwas wie: MyInt := FReceiveBuffer[11] << FReceiveBuffer[12] << FReceiveBuffer[13];
Ich werde die packed record Methode einsetzen.


Delphi-Quellcode:
TMyIntRec = packed record
    case tag : byte of
      0 : (b1 : Byte;
           b2 : Byte;
           b3 : Byte;
           b4 : Byte);
      1 : (MyInt : Integer);
end;


function Test1:integer;
var MyIntRec: TMyIntRec;
begin
  MyIntRec.MyInt := 0;
  MyIntRec.b1 := FReceiveBuffer[13];
  MyIntRec.b2 := FReceiveBuffer[12];
  MyIntRec.b3 := FReceiveBuffer[11];
  result := MyIntRec.MyInt;
end;
Delphi-Quellcode:
function Test2:integer;
begin
  result := FReceiveBuffer[11];

  result := result shl 8;
  result := result or FReceiveBuffer[12];

  result := result shl 8;
  result := result or FReceiveBuffer[13];

end;

Herzlichen Dank an ALLE und einen schönen Tag.
Gruß Kostas
  Mit Zitat antworten Zitat