AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TIdBytes, Variable deklariert als Word und versenden mit TCPIP
Thema durchsuchen
Ansicht
Themen-Optionen

TIdBytes, Variable deklariert als Word und versenden mit TCPIP

Ein Thema von Alex_ITA01 · begonnen am 17. Sep 2015 · letzter Beitrag vom 17. Sep 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

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

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

  Alt 17. Sep 2015, 14: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 14:14 Uhr)
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 17. Sep 2015, 14:30
und wie müsste man es auf die Reise schicken, damit es richtig ankommt?
Dachte die TIdBytes Struktur (array) und die ganzen Umwandelfunktionen kann ich dafür nehmen?!
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
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:08
Im Prinzip kannst du das nehmen, aber du siehst ja selber, dass du nicht weisst, was du da wirklich annehmen sollst und wie.

Die Lösung lautet: Protokoll

Definiere ein Protokoll was jede Nachricht einhalten muss, damit der Server weiß, was da geschickt wird und wie er damit umgehen muss.

Beispiel:
Code:
Nachrichtentyp 00-FF (1 Byte)
Länge der Nachricht 0000-FFFF (2 Bytes)
Payload (x Bytes) // Hier sind die echten Daten drin
Prüfsumme 00-FF (1 Byte)
Der Server empfängt nun ein Byte, dann 2 Bytes, dann die Nachricht und das letzte Byte, prüft die Nachricht gegen die Prüfsumme und verteilt die Nachricht anhand des Nachrichtentyps.
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)
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 17. Sep 2015, 20:03
Ja ok, ich kann dann genau die Telegrammart identifizieren und dann entsprechend mit dem Lo() und Hi() arbeiten.
Trotzdem finde ich es ein wenig verwunderlich, dass ich in die Funktion "ToBytes" alle möglichen Datentypen reingeben kann und ich kann auch TIdBytes versenden über TIdTCPClient (IOHandler.Write) aber dann die Auswertung schief geht, weil etwas als "illegal characters" erkannt wird. Wofür gibt es dann die komplett fertigen Funktionen um sich die TIdBytes entsprechend eines Datentypes x erstellen zu lassen und anschließend kann ich es so nicht versenden bzw der Empfang interpretiert das als ungültig. Dann kann ich mir auch gleich selber das Format überlegen und schicke es z.B. als String und nehme den dann komplett auseinander...
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

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

  Alt 17. Sep 2015, 21:12
Es ist halt immer die Badehose Schuld
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)
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 17. Sep 2015, 21:41
? Sorry, verstehe den Satz nicht
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz