Ansi.sys in XP einbinden möglich?



  • Hi!

    In der FAQ ist ja dazu bereits von SideWinder ein Beitrag zu finden, in dem beschrieben steht, dass die Escapesequenzen unter xp nicht funktionieren. In einem anderen Thread heißt es dann wieder, dass es auf irgendeine Weise doch funktioniert - aber leider keine anleitung dazu!

    Kann mich mal dazu einer Aufklären bzw. wenn es möglich ist, eine Anleitung hierfür für xp liefern?

    Viele Grüße,

    Fabian St.



  • Ich kenne immer noch keinen Weg, und soviel ich weiß kennen meine 2 Kollegas hier (elise, AJ) auch keine Möglichkeit.

    Aber ich würde mich freuen wenn sich doch noch eine finden würde 🙂

    MfG SideWinder



  • Hi!

    Ja, wenn ihr das nicht wisst - dann wirds wohl wirklich keine Lösung hierfür geben. Dann muss ich es wohl noch unter Linux mal probieren...

    Grüße,

    Fabi

    P.s Für jede weitere Anregungen stehe ich offen 🙂



  • unter linux kannst du wunderbar \33[2J schreiben.

    leider habe ich für xp auch keine lösung.

    du kannst dieses hier noch versuchen:

    http://is-it-true.org/nt/utips/utips181.shtml

    aber ich habe hier leider keinen xp, zum testen, und ansonsten nutze ich die winapi.

    so long, viel glück 🙂

    ps: melde bitte, falls das unter xp wirklich funktioniert.
    thx



  • Hmm, mein Buch sagt auch das die ESC-Sequenzen nicht unter 2000/XP funktionieren, aber es schreibt eine Alternative, so das es unter 2000/XP auch funktioniert. Ich kann ja mal nachschauen und wenn ich es finde poste ich es.



  • Hallo nochmal!

    So jetzt hab ich mal den Tip probiert - leider funktioniert er (noch) nicht. Ich habe in VC 6.0 eine Win32 Konsolenanwednung erstellt und diese lässt sich anscheinend in der command.com nicht ausführen - was müsste ich dafür ändern?

    Grüße,

    Fabi



  • VirtualDreams schrieb:

    Hmm, mein Buch sagt auch das die ESC-Sequenzen nicht unter 2000/XP funktionieren, aber es schreibt eine Alternative, so das es unter 2000/XP auch funktioniert. Ich kann ja mal nachschauen und wenn ich es finde poste ich es.

    Hi!

    Das wär ja super! Ich würde mich echt freuen, wenn du das posten könntest :):)



  • Theoretisch dürfte es möglich sein diese Escapesequenzen zu "simulieren". Die ANSI.SYS bekommt man unter XP auf keinen Fall zum Laufen, also müsste man etwas ähnliches schreiben, dass die Funktionalität der ANSI.SYS übernimmt. Das ganze dürfte aber relativ umständlich sein und setzt gute bis sehr gute Kenntnisse im Bereich WinAPI voraus.



  • // Statt der ANSI-Bildschirmsteuerzeichen werden hier
    // die systemabhängigen Funktionen der Windows-API
    // (API == Application Programming Interface) verwendet.

    als Bsp. für Zeilenanwahl
    #define LOCATE(z,s) setCursor(z-1,s-1) // Cursor in Zeile z,

    EDIT2: Aber mehr schreibt das tolle Buch auch nicht - schade eigentlich.

    EDIT: Aber irgendwie lassen sich die schweine Projekte nicht compilieren 😃



  • AJ schrieb:

    Theoretisch dürfte es möglich sein diese Escapesequenzen zu "simulieren". Die ANSI.SYS bekommt man unter XP auf keinen Fall zum Laufen, also müsste man etwas ähnliches schreiben, dass die Funktionalität der ANSI.SYS übernimmt. Das ganze dürfte aber relativ umständlich sein und setzt gute bis sehr gute Kenntnisse im Bereich WinAPI voraus.

    Diese kann ich jedoch leider nicht vorweisen 😞

    Ich machs dann eben in Linux - schade nur, weil es dann auf so vielen Rechnern nicht ausführbar ist...



  • Ja leider wird es meistens sobald Farbe im Spiel ist, betriebssystemabhängig 😞

    Du könntest das allerdings mit #if #else #endif lösen und je nach betriebssystem die entsprechenden spezifischen Funktionen zum Einfärben verwenden, anstatt deiner Escapesequenzen.



  • Hallo,

    möglicherweise ist das hier

    http://www.wintotal.de/Tipps/Eintrag.php?RBID=2&TID=644&URBID=11

    gesucht. D.h. aber, nur wenn man DOS-Programme laufen lassen will (geht nicht, wenn man eine Win32-Konsolenanwendung kompiliert hat), kann man auf diese Weise evtl. Unterstützung der ANSI-Escape-Sequenzen erreichen, wenn ich es richtig verstanden habe (denn selbst ausprobiert habe ich dieses Vorgehen noch nicht, was vor allem daran liegt, daß ich schon lange keine DOS-Programme mehr schreibe, und auch keine mehr besitze, mit denen ich das testen könnte 🙂 )

    MfG



  • ich würde ... .trotz aller verenkungen, aj seinen vorschlag irgendwann einschlagen.

    mit if def.. das jeweilige betriebssystem orten, und dann verschiedene farbimplementierungen fahren, die alle über gleichen namen und gleicher positionierung (farbgebung) laufen. dann bist du auch unabhängig, hast aber natürlich doppelte arbeit.
    thats life 🙂



  • Hallo!

    Ich probiere gerade, ob mein Programm unter Linux (Debian) läuft und wenn ja dann schau ich mir mal diese #if #ifelse Befehle mal an. Aber Danke für die Anregung!

    Grüße,

    Fabian



  • @elise
    Naja soviel Arbeit macht das ganze eigentlich nicht. Ich würde je Aktion eine eigene Funktion schreiben und darin einmal das mit den #ifdef ... machen.

    In etwa so (Farbe ändern):

    void setzeFarbe(int nr)
    {
    #ifdef __WIN32__
       SetConsoleColor(nr);
    #else
       #ifdef __WIN16__
       textcolor(nr);
       #else
          #ifdef __LINUX__
       ...
          #endif
       #endif
    #endif
    }
    

    Hinweis: Das ist nur ein Beispiel, die Namen der Funktionen und defines können also falsch sein.



  • @AJ: Schonmal was von #elif gehört? 🙂

    Ajo und es ist wirklich ein Funktionsname verkehrt: SetConsoleTextAttribute() heißts 😉

    MfG SideWinder



  • Hi!

    Ich wollte mich nur mal zurückmelden: Ich habs jetzt unter Linux kompiliert und gelinkt - es funktioniert bestens *freu* 🙂

    Grüße,
    Fabi



  • SideWinder schrieb:

    @AJ: Schonmal was von #elif gehört? 🙂

    Ajo und es ist wirklich ein Funktionsname verkehrt: SetConsoleTextAttribute() heißts 😉

    MfG SideWinder

    Um sonst hab ich nicht geschrieben, dass es ein Beispiel ist 😉

    Dass es #elseif gibt, weiß ich, allerdings bin ich mir nicht sicher, ob es #elseifdef gibt und mit einem #elseif defined wollte ich auch nicht unbedingt rüber kommen.


Anmelden zum Antworten