AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke IdTelnet - Empfangene Daten anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

IdTelnet - Empfangene Daten anzeigen

Ein Thema von user0815 · begonnen am 28. Okt 2014 · letzter Beitrag vom 29. Okt 2014
Antwort Antwort
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#1

IdTelnet - Empfangene Daten anzeigen

  Alt 28. Okt 2014, 14:00
Hallo,

wie kann ich Daten lesbar anzeigen die ich per "IdTelnetDataAvailable(Sender: TIdTelnet; const Buffer: TArray<System.Byte>" erhalte ?
Wenn ich Befehle per Putty sende so kann ich Antwort in Klarschrift lesen...

const Buffer: TArray<System.Byte>
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: IdTelnet - Empfangene Daten anzeigen

  Alt 28. Okt 2014, 20:39
Im Unicode Zeichensatz gibt es für die nichtdruckbaren Steuerzeichen #$00 - #$1F recht nette Ersatzzeichen:
http://en.wikipedia.org/wiki/Unicode_control_characters
Natürlich muss der verwendete Font diese Zeichen enthalten sonst werden die nicht angezeigt.
Der Font sollte ein monospaced Font sein.

Du benötigst also eine Funktion, die ein Byte in ein Unicodezeichen transformiert:
Delphi-Quellcode:
function Byte2Unicodechar(b:System.Byte):char;
begin
   if(b >=0 and b < 32)
   begin
      // Umsetzung nach U+240x
      return chr(b + $2400); // ungetestet da keine aktuelle Delphiversion vorh.
   end
   else
   begin
      // direkt byte -> char
      return chr(b);
   end;
end
Dann noch eine zweite Funktion die ein TArray<System.Byte> in einen String übersetzt und dabei obige Funktion benützt.
Das ist im Prinzip nur eine For-Schleife.
Im Ergebnisstring dann noch in Blöcke von 32 Zeichen unterteilen und zeilenweise in ein TMemo schreiben.
fork me on Github

Geändert von sx2008 (28. Okt 2014 um 20:44 Uhr)
  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: IdTelnet - Empfangene Daten anzeigen

  Alt 29. Okt 2014, 00:47
Da der TE aber XE2 hat kann man auch sehr schön http://docwiki.embarcadero.com/Libra...ding.GetString benutzen
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
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#4

AW: IdTelnet - Empfangene Daten anzeigen

  Alt 29. Okt 2014, 07:39
Ich konnte es jetzt nochmal testen, die Zeichen werden so in Klarschrift ausgegeben:

Delphi-Quellcode:
procedure TForm1.IdTelnetDataAvailable(Sender: TIdTelnet; const Buffer: TArray<System.Byte>);
var
  s : String;
begin
  SetString(s, PAnsiChar(@Buffer[0]), length(Buffer));
  // ...
end;

@Sir Rufo: Das hatte ich versucht, da kam bei mir nur Zeichen Kauderwelsch.

s := TEncoding.Unicode.GetString(Buffer); gibt die selben Zeichen aus wie: SetString(s, PWideChar(@Buffer[0]), length(Buffer) div 2); DANKE !
  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 12:42 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