Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ClientSocket: 4bytes lesen und kombinieren (https://www.delphipraxis.net/15684-clientsocket-4bytes-lesen-und-kombinieren.html)

Pseudemys Nelsoni 2. Feb 2004 17:02


ClientSocket: 4bytes lesen und kombinieren
 
hoi,

Wenn ich ein Socket "auslese" 1-byte zurzeit, die ersten 4bytes sind eine zahl die die länge des rests angeben. wie kombiniere ic diese 4bytes zu einen integer?

negaH 2. Feb 2004 17:05

Re: ClientSocket: 4bytes lesen und kombinieren
 
Delphi-Quellcode:
// Entweder
var
  A,B,C,D: Byte;
  I: Cardinal;
begin
  I := A shl 24 + B shl 16 + C shl 8 + D;
// oder
  I := D shl 24 + C shl 16 + B shl 8 + A;
end;
abhänig davon ob der Integer in Big Endian oder Little Endian gesendet wurde.

Gruß Hagen

Chewie 2. Feb 2004 17:05

Re: ClientSocket: 4bytes lesen und kombinieren
 
:wiejetzt: Ein Integer ist 4 Bytes groß.

Wie genau bekommst du die Daten geliefert?

Pseudemys Nelsoni 2. Feb 2004 17:12

Re: ClientSocket: 4bytes lesen und kombinieren
 
danke :}

Christian Seehase 3. Feb 2004 15:47

Re: ClientSocket: 4bytes lesen und kombinieren
 
Moin Pseudemys Nelsoni,

Du könntest das auch mit Varianten Records lösen:

Delphi-Quellcode:
type
  TMyVarRec = packed record
    case byte of
      0 : (A:Byte;
           B:Byte;
           C:Byte;
           D:Byte;);
      1 : (AR : array [1..4] of Byte);
      2 : (I:Cardinal);
  end;

var
  MyVar : TMyVarRec;
so könntest Du die Werte direkt in MyVar.A bis MyVar.D oder in einer Schleife in MyVar.AR[1] bis MyVar.AR[4] einlesen und könntest dann direkt, ohne weiter etwas umrechnen zu müssen (spart Rechenzeit) den Wert in I benutzen.
Ggf. die Reihenfolge beachten, wie Hagen ja schon geschrieben hatte.

Pseudemys Nelsoni 3. Feb 2004 16:32

Re: ClientSocket: 4bytes lesen und kombinieren
 
danke für den code, werde es benutzen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz