Textausgabe aber farbig ?



  • Mich würde mal brennend interesieren wie ich die Textausgabe mit Hilfe von C farbig gestalten kann.
    Ich hoffe das funktioniert dann unter Linux genauso, nicht das es da eine Header gibt die man nur unter Windows benutzen kann.

    Ich hoffe euch fällt dazu was ein.
    Danke.



  • ISO-C kennt keine farbigen Textausgaben ...

    u.U. gibt's auf Deinem System eine <conio.h> oder es funktionieren Escape-Sequenzen ... portabel ist aber beides nicht.



  • schau dir am besten mal die improved Console an (in der Konsolen FAQ), dass ist eine Wrapper Lib, die dir dabei hilft.

    Derzeit läuft die unter Windows (von Marc++us dem Forum besitzer geschrieben).

    Ich habe aber eine Portierung für die curses und escape sequenzen und arbeite an einer Portierung für die termios Lib.

    Die sind zwar noch nicht getestetet, kann ich dir aber gerne mailen.



  • Ähm, in der FAQ des Konsolenboards findet man allerhand dazu.

    MfG SideWinder



  • Hi

    Mit ansi-c geht das. Ich poste noch mal ne header datei, die ich aus nem sehr alten Buch habe. Muss ich nur erst suchen. Das ganz funktioniert so ähnlich wie mit escape sequenzen "printf("\033[2j")"

    oder so ähnlich loescht zB.: den Bildschirm. Nach diesem Muster gibt es noch mehr Sachen, halt auch fuer farbige Schrift und blinken und so.

    Unter linux solltest du dir mal die ncurses.h und die man page zur selbigen ansehen.

    Gruß Prolog

    ps.: Ich such jetzt mal die Headerdatei....



  • @prolog: Das ist aber nicht Standard! Das sind Escapesequenzen - ebenfalls in der Konsolen-FAQ zu finden. Das ist genau so, als würdest du " system("cls") " als Standard bezeichnen...

    MfG SideWinder



  • Hallo

    Das mag ja sein dass das nicht **standard ist, aber die meisten Unices habe den Ansi-treiber aktiviert. Man kann in solch einem Fall wohl von Quasi-Standard sprechen.

    Hier ist uebrigens die kleine Headerdatei.

    Auch wenn sie nicht Standard ist, ist sie manchmal nuetzlich.

    #ifndef smdANSI_H
    #define smdANSI_H
    
    /*-------------Farbe Vordergrund-------------------------------*/
    
    #define BLACK       printf("\033[30m");
    #define RED     printf("\033[31m");
    #define GREEN       printf("\033[32m");
    #define YELLOW          printf("\033[33m");
    #define BLUE        printf("\033[34m");
    #define MAGENTA         printf("\033[35m");
    #define CYAN        printf("\033[36m");
    #define WHITE       printf("\033[37m");
    
    /*------------------------Farbe Hintergrund----------------------*/
    
    #define HBLACK           printf("\033[40m");
    #define HRED         printf("\033[41m");
    #define HGREEN           printf("\033[42m");
    #define HYELLOW          printf("\033[43m");
    #define HBLUE        printf("\033[44m");
    #define HMAGENTA     printf("\033[45m");
    #define HCYAN        printf("\033[46m");
    #define HWHITE       printf("\033[47m");
    
    /*----------------- EFFECTE setzen-----------------------------*/
    
    #define SETEFFECT(a,b,c) printf("\033[%d;%d;%dm",(a),(b),(c));
    
    /* Bsp:  SETEFFECT(5,32,45)    Kombination aus BLINK GREEN und HMAGENTA */
    
    /*----------------Sonstiges Schrift--------------------------------*/
    
    #define BRIGHT      printf("\033[1m");
    #define DARK        printf("\033[2m");  /* abgedunkelte Schrift */
    #define ITALIC      printf("\033[3m"); 
    #define UNDERLINE   printf("\033[4m"); /* Unterstrichen */
    #define BLINK       printf("\033[5m"); /*Blinken ein */
    #define QBLINK      printf("\033[6m"); /* schnelles Blinken ein */
    #define REVERSE         printf("\033[7m");  /* reverse video */
    #define NOECHO          printf("\033[8m");
    #define NORMAL          printf("\033[0m"); /* Alles wieder normal */
    
    /* ----------------Curser und CO--------------------------------*/
    
    #define CLSCR       printf("\033[2J");
    #define CLREOL      printf("\033[K"); /* Loescht bis Zeilenende */
    #define SAVECURPOS  printf("\033[s"); /*speicher actuelle Position */
    
    #define SETSAVEDPOS printf("\033[u"); /* geht zur gespeicherten Position */
    
    #define SCURUP      printf("\033[A"); /* Eine Zeile hoch */
    #define SCURDOWN    printf("\033[B"); /* eine Zeile runter */
    
    #define SCURRIGHT   printf("\033[C"); /* eine Zeile nach rechts */
    
    #define SCURLEFT    printf("\033[D"); /* eine Spalte nach links */
    
    #define CURUP(x)    printf("\033[%dA",(x)); /* Gehe x Zeilen nach oben */
    #define CURDOWN(x)  printf("\033[%dB",(x)); /*gehe x Zeile nach unten */
    #define CURRIGHT(x) printf("\033[%dC",(x)); /* gehe x Spalten nach rechts */
    #define CURLEFT(x)  printf("\033[%dD",(x)); /* gehe x Spalten nach links
    #define GOTO(x,y)   printf("\033[%d;%dH",(y),(x)); /*  Gehe zur Position x,y */
    
    #define CURGOHOME(x)    printf("\033[%df",(x)); /* Geh nach Zeile x und setze Curser auf Anfang */
    
    #define CURDOWNHOME(x)  printf("\033[%dE",(x)); /*Gehe x Zeilen nach  unten und setzte Curser an den Anfang */
    
    #define CURUPHOME(x)    printf("\033[%dF",(x)); /* Gehe x Zeilen nach oben und setze Curser an den Anfang */
    
    /*------------ Ende Ansi.h-------------------------------------*/
    
    #endif
    

    Gruß Prolog

    Automatische Rechtschreibkorrektur wurde aktiv.

    **



  • Brauchbar, aber eben nicht Standard ;).

    MfG SideWinder



  • Hi

    Okey Dokey kein **Standard 😉

    Gruß Prolog

    Automatische Rechtschreibkorrektur wurde aktiv.

    **



  • @SideWinder
    [Korintenkackmodus]
    Doch, es ist Standard, sogar ein ANSI Standard, nur nicht ANSI-C!
    (Den ANSI-C Standard gibt es natürlich auch nicht, sondern mehrere.)
    [/Korintenkackmodus] 😉



  • @Geo: Mir fehlen die Worte, wie konnte ich nur so falschliegen 🙄:p;).

    MfG SideWinder



  • Original erstellt von Geo:
    @SideWinder
    (Den ANSI-C Standard gibt es natürlich auch nicht, sondern mehrere.)
    [/Korintenkackmodus] 😉

    mhm... ich kenne nur einen ANSI-C Standard... denn ich glaube, dass der 2. C Standard bereits ein ISO Standard war...



  • Also auf jeden Fall mal Danke an alle die sich mit meinem Problem befsst haben , ich probiers mal mit den ESC-Sequenzen



  • mhmm , ich gehe mal davon aus das cprinf auch nicht standard ist wa?
    denke mal das ist so doskram aber vielleicht geht das ja auch unter linux



  • Hab zu dem Thema auch nen Problem

    bei C++ Builder führt er nicht die sequenzen aus, sondern zeigt sie auf dem Bildschirm an

    Wie kann man das denn verändern?



  • Original erstellt von Zecke:
    **Hab zu dem Thema auch nen Problem

    bei C++ Builder führt er nicht die sequenzen aus, sondern zeigt sie auf dem Bildschirm an

    Wie kann man das denn verändern?**

    Dann lies den Thread nochmal und hoer auf SideWinder -> improved console
    und siehe die Konsolen FAQ



  • ups danke für den Hinweis

    hat sich also bei 2k schon erledigt naja


Anmelden zum Antworten