AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Indy 10 client <STX>Daten<ETX> senden
Thema durchsuchen
Ansicht
Themen-Optionen

Indy 10 client <STX>Daten<ETX> senden

Ein Thema von Grizu · begonnen am 29. Aug 2016 · letzter Beitrag vom 30. Aug 2016
Antwort Antwort
Grizu

Registriert seit: 22. Aug 2016
20 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

AW: Indy 10 client <STX>Daten<ETX> senden

  Alt 30. Aug 2016, 10:20
Hi,

erst mal danke für eure Ideen.

Also:
Delphi-Quellcode:
s[0] := #2; // STX
 s[i1] := #3; // ETX
Dann kommt die Fehlermeldung inkompatible Typen, weil s ein TiDBytes ist.

Delphi-Quellcode:
var
   Daten: string;

 msc_client.IOHandler.Write(chr(2) + Daten + chr(3));
Ist eine gute Idee, aber hier kompiliert er auch nicht. Wieder Fehlermeldung inkompatible Typen.

Ich war der Meinung das
Delphi-Quellcode:
s[0] := 2; // STX
 s[i1] := 3; // ETX
die richtige Rahmung ist. Aber anscheinend nimmt der Server das nicht an........
Ich versuch es mal weiter, aber danke euch für den Input.

hier nochmal der code mit der variablen Deklaration:
ich habe das s mal gegen BBytes ersetzt. Ist richtig s ist doof für ein Bytearray, sollte man nicht machen.

Delphi-Quellcode:
procedure TMain_Frm.btn_interface_msc_sendClick(Sender: TObject);
var
BBytes : TIDBytes;
dat, dattmp : String;
character : Char;
b : Byte;
i, a, i1, i2 : Integer;
begin
a := Length(txt_interface_msc_sendstring.text);
dat := txt_interface_msc_sendstring.text;

i1 := 1;
i2 := 1;
setlength(BBytes, i1);

BBytes[0] := 2; // STX


for i := 1 to a do begin
i1 := i1 + 1;
setlength(BBytes, i1);
BBytes[i1] := ord(dat[i2]);
i2 := i2 + 1;
end;

i1 := i1 + 1;
setlength(BBytes, i1);
BBytes[i1] := 3; // ETX

msc_client.IOHandler.Write(BBytes);
end;//*****************************************************************************************************************************************
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.821 Beiträge
 
Delphi 12 Athens
 
#2

AW: Indy 10 client <STX>Daten<ETX> senden

  Alt 30. Aug 2016, 10:30
Mir ist auch nicht ganz klar, warum Indy uns dieses Hindernis beschert hat, denn immerhin steht in der IdGlobal.pas: TIdBytes = array of Byte; Das ist ja nun wirklich kein Hexenwerk, aber man muss sich damit arrangieren, und immerhin produziert man damit delphibezogene SO-Einträge, was ja gut für die Popularität der Sprache ist

Aber die Unit IdGlobal bietet dann auch gleich die Lösung:
function ToBytes(beinahe alle erdenklichen Datentypen):TIdBytes; overload

Bau Deinen String und pack ihn als Argument da rein, fertig.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Grizu

Registriert seit: 22. Aug 2016
20 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Indy 10 client <STX>Daten<ETX> senden

  Alt 30. Aug 2016, 10:41
Hallo nochmal,

manchmal einfach Kaffee trinken gehen, Zigarette und dann geht's....


es ist tatsächlich sooooooo einfach:

Delphi-Quellcode:
procedure TMain_Frm.btn_interface_msc_sendClick(Sender: TObject);
var
dat : String;
begin
dat := txt_interface_msc_sendstring.text;

msc_client.IOHandler.Write(2);
msc_client.IOHandler.Write(dat);
msc_client.IOHandler.Write(3);
end;//*****************************************************************************************************************************************
Man muss einfach das STX und ETX in einer einzelnen Message schicken und zwischen drin dann den String.....

Danke Carl dein Ansatz hat mich darauf gebracht.....
  Mit Zitat antworten Zitat
Grizu

Registriert seit: 22. Aug 2016
20 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Indy 10 client <STX>Daten<ETX> senden

  Alt 30. Aug 2016, 10:49
So hab nochmal den Ansatz von Carl getestet und der geht natürlich auch.......

Bei mir war ja s ein TIDBytes deshalb meckert er, wenn man einen String nimmt geht's auch....

Delphi-Quellcode:
procedure TMain_Frm.btn_interface_msc_sendClick(Sender: TObject);
var
dat : String;
begin
dat := txt_interface_msc_sendstring.text;

msc_client.IOHandler.Write(chr(2) + dat + chr(3));
end;//*****************************************************************************************************************************************
Es ist also ein simpler 3 Zeiler......
  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 03:21 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