Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: TIdBytes, Variable deklariert als Word und versenden mit TCPIP

  Alt 17. Sep 2015, 15:12
Du schickst also folgendes los
Code:
999 = 0x03E7 => 0xE7, 0x03
Diese beiden Bytes gehen in der Reihenfolge auf die Reise.

Beim Umwandeln der Nachricht von string nach Bytes kommt das heraus
Code:
0x3F, 0x03 => 0x033F = 831
  ?    #03
Und warum bekommst du ein ??

Ganz einfach, weil 0xE7 größer ist als 0x7F und das wird umgewandelt in
Delphi-Quellcode:
function TIdASCIIEncoding.GetBytes(const AChars: PIdWideChar; ACharCount: Integer;
  ABytes: PByte; AByteCount: Integer): Integer;
var
  P: PIdWideChar;
  i : Integer;
begin
  P := AChars;
  Result := IndyMin(ACharCount, AByteCount);
  for i := 1 to Result do begin
    // replace illegal characters > $7F
    if UInt16(P^) > $007F then begin
      ABytes^ := Byte(Ord('?'));
    end else begin
      ABytes^ := Byte(P^);
    end;
    //advance to next char
    Inc(P);
    Inc(ABytes);
  end;
end;
ah ja ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (17. Sep 2015 um 15:14 Uhr)
  Mit Zitat antworten Zitat