Textformat in Editorgadget

Anfängerfragen zum Programmieren mit PureBasic.
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Textformat in Editorgadget

Beitrag von schleicher »

Erhalte mit über mein kleines Telnet prog. bei der Eingabe von dem Linux-Befehl "top"und auch einige andere
Linuxbefehle komische Zeichen wie z.B. [0;10m[39;49m[ im Editorgadget und auch Debug-Ausgabe. Über normales Windows Telnetfenster sind die nicht da . Was ist das ? Text wird sonst normal dargestellt. Bis auf die Ö,öÜ,ü,Ä,ä,ß.
Hab schon das Unicodehäkchen im Compiler rausgenommen. Hat aber nichts gebracht.

Die Antwort vom Linuxserver erhalte ich mit dieser Procedure:

Code: Alles auswählen

  Procedure.s GetString(ConnectionID, TimeOut = 90000)
   
    Protected *Buffer, t, Size, Text.s
   
    If ConnectionID
      Delay(10)
      *Buffer = AllocateMemory(12000)
      t = ElapsedMilliseconds()
     
      If *Buffer
       
        While NetworkClientEvent(ConnectionID) <> 2 And ElapsedMilliseconds()-t < Timeout
          Delay(10)
        Wend
         Size = ReceiveNetworkData(ConnectionID, *Buffer, 12000)
         Text.s = PeekS(*Buffer,-1, #PB_Ascii) ; Hier habe ich auch schon auf #PB_UTF8 umgestellt, bringt aber auch nichts.
          ProcedureReturn Text 
          FreeMemory(*Buffer) 
      EndIf
   EndIf
   
    ProcedureReturn Text   
   
  EndProcedure
Der Linuxserver benutz Zeilenende Unix und UTF8 ohne Boom.

Wie bekomme ich die komischen Zeichen weg und die Ö,Ü;Ä normal dagestellt. CharToOem_( und umgekehrt hat da nicht geholfen.
Purebasic 5.51
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Textformat in Editorgadget

Beitrag von NicTheQuick »

Ich würde das ja gerne testen, aber so ohne lauffähigen Code habe ich keine Ahnung wie ich das tun soll.

Im Übrigen bringt ein 'FreeMemory(*Buffer)' hinter 'ProcedureReturn' nicht viel. :wink:
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Textformat in Editorgadget

Beitrag von edel »

Code: Alles auswählen

      *Buffer = AllocateMemory(12000)
[...]
          ProcedureReturn Text 
          FreeMemory(*Buffer) 
Das ist nicht so toll, nur so als Hinweis ;)
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Re: Textformat in Editorgadget

Beitrag von schleicher »

Ok habe ich gerade geändert.
Purebasic 5.51
Benutzeravatar
_sivizius
Beiträge: 98
Registriert: 23.10.2013 15:21

Re: Textformat in Editorgadget

Beitrag von _sivizius »

[X;Ym sieht stark nach Ansi-Escape-Sequenzen aus, so ein Terminal enthält formatierten Text, z.B. Vordergrundfarbe, Hintergrundfarbe eines Zeichens, ... und das steuert man eben mit solchen Ascii-Zeichenkombinationen, das machen diverse Consolen-Programme wie top so. Das macht aber nicht Telnet, Telnet gibt rohes Ascii aus. Das ist also so normal. Kein Bug^^
Du kannst aber einfach alles, was zwischen einem Asc(27) und dem nächsten Buchstaben ist, herausschneiden.
http://bluesock.org/~willg/dev/ansi.html#sequences
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Re: Textformat in Editorgadget

Beitrag von schleicher »

_sivizius hat geschrieben:[X;Ym sieht stark nach Ansi-Escape-Sequenzen aus

Ja genau das ist es . Kann man die irgendwie in den Code übernehemen ?
Ansonsten bleibt mir nur wie du schon sagst das Herausschneiden.
Aber telnet-console gibt es korrekt aus. Komisch


Hilft mir das hier weiter ?
http://purebasic.fr/german/viewtopic.ph ... +Sequenzen

Komme irgendwie nicht klar damit .
Die Sequenzen werden bei mir orginal so dargestellt Beispiel:

ESC[1;34mbinESC[0m wobei "bin" ein Ordner ist und dann kommt der nächste. Ordner

das wäre unter Linux die Befehlausgabe "ls /var"
Purebasic 5.51
auser
Beiträge: 58
Registriert: 17.05.2011 10:56

Re: Textformat in Editorgadget

Beitrag von auser »

Schau dir vielleicht auch https://en.wikipedia.org/wiki/ANSI_escape_code bzw. http://ascii-table.com/ansi-escape-sequences-vt-100.php an.

Zum Testen in der Bash z.B. mit PuTTY (da ist auch das 0;10m dabei):

Code: Alles auswählen

echo -e "\033[1;33mtest\033[0;10m"
Um zu Testen was es macht (bzw. was es nicht macht wenn das 0;10m fehlt):

Code: Alles auswählen

echo -e "\033[1;33mtest"
...und da solltest du mit der Liste von Wikipedia auch schon erahnen können daß statt 0;10m auch 0;22m oder 0;00m helfen sollte... (um wieder einen normalen Text zu kriegen und nicht auf ewig in gelb tippen zu müssen) oder was sich ändert wenn du statt 1;33m ein 0;33m hinschreibst ...oder wie du rot statt gelb machen kannst. Eigentlich hast du da eh nur zwei Möglichkeiten: Entweder du interpretierst es richtig (wie es z.B. ein PuTTY macht) und dann auch möglichst vollständig und nach einem Standard oder aber du machst es weg.
Antworten