Imroved Console Problem



  • Hallo zusammen

    Nach einer kleinen Programmierpause wollte ich mich gestern mal wieder mit C++ befassen und bin mal wieder auf dieses Forum gestossen. Ich sah auch gleich das Improved Console einen grossen Fortschritt gemacht hatt. Kompliment erstmal an den entwickler!

    Leider funktionert es aber nicht ganz so wie es sollte. Hier mein Problem:

    Ich habe alles so gemacht wie auf der Internetseite beschrieben, nach der Programmieranfänger-Variante. Als ich dann das ganze Komplieren wollte kam diese Fehlermeldung->

    d:\programme\microsoft visual studio\myprojects\spannungsteiler\ic.cpp(247) : fatal error C1017: invalid integer constant expression
    Error executing cl.exe.
    

    Woran könnte das liegen?

    Ich habe

    #define IMPROVED_CONSOLE_WIN9X_COMPATIBLE
    

    dazugeschrieben, benutzen tue ich Visual C++ 6

    Danke für eure Hilfe,

    Gruss steport



  • Sorry für die große Reaktionszeit erstmal, war auf einem Festival.

    Also das define hast du offenbar richtig gesetzt, da der Fehler in dem Bereich liegt in dem das define wirkt 🙂

    Den Fehler kann ich mir jetzt nicht ganz erklären, aber so ins blaue geraten versuch doch mal bevor du die Improved Console in dein Projekt includierst (mit #include "ic.h") noch die Header-Datei <tchar.h> zu includieren.

    MfG SideWinder



  • Kein Problem, hier war auch ein kleines Fest 🙂

    Habe jetzt mal deinen Vorschlag ausprobiert aber leider besteht das Problem weiterhin.

    An was könnts den noch liegen?

    Gruss steport

    Der Gast war übrigens ich..



  • Ich hab den Fehler, in der Datei ic.cpp gehört folgendes geändert:

    // Original:
         Console::CWND Console::getCWND () const
            {
        #ifndef IMPROVED_CONSOLE_WIN9X_COMPATIBLE
                return GetConsoleWindow();
        #elif
                TCHAR oldtitle [256];
                _tcscpy(oldtitle,getTitle().c_str();
                TCHAR newtitle [256];
                _stprintf(newtitle,TEXT("%s%s"),GetTickCount(),GetCurrentProcessId());
    
                SetConsoleTitle(newtitle);
                CWND cwnd = FindWindow(0,newtitle);
                SetConsoleTitle(oldtitle);
    
                return cwnd;
        #endif
            }
    
    // Neu:
         Console::CWND Console::getCWND () const
            {
        #ifndef IMPROVED_CONSOLE_WIN9X_COMPATIBLE
                return GetConsoleWindow();
        #else // HIER GEHÖRT #else UND NICHT #elif
                TCHAR oldtitle [256];
                _tcscpy(oldtitle,getTitle().c_str();
                TCHAR newtitle [256];
                _stprintf(newtitle,TEXT("%s%s"),GetTickCount(),GetCurrentProcessId());
    
                SetConsoleTitle(newtitle);
                CWND cwnd = FindWindow(0,newtitle);
                SetConsoleTitle(oldtitle);
    
                return cwnd;
        #endif
            }
    

    Werde ich asap auch auf der Page austauschen.

    MfG SideWinder



  • Ich habe jetzt den entsprechenden Eintrag geändert, leider habe ich jetzt wieder ein anderes Problem.

    Der Compiler sagte in der Zeile

    _tcscpy(oldtitle,getTitle().c_str();
    

    felht noch ein ')' vor dem ';'

    Ich habe die Zeile mal so Abgeändert:

    _tcscpy(oldtitle,getTitle().c_str());
    

    Nun bricht mein Programm beim Ausführen ab, und Windows will ein Problembericht senden...

    Wo ist den jetzt der Haken?

    Gruss steport



  • Testen schützt vor Dummheit nicht, ich bau in dem Codeblock mächtig Mist und merke es ganz einfach nicht 🙂

    Gebe zu diesen Modus natürlich nicht komplett durchgetestet zu haben - wird schon funktionieren...

    Console::CWND Console::getCWND () const
    	{
    #ifndef IMPROVED_CONSOLE_WIN9X_COMPATIBLE
    		return GetConsoleWindow();
    #else
    		TCHAR oldtitle [256];
    		_tcscpy(oldtitle,getTitle().c_str());
    		TCHAR newtitle [256];
    		_stprintf(newtitle,TEXT("%d%d"),GetTickCount(),GetCurrentProcessId());
    
    		SetConsoleTitle(newtitle);
    		CWND cwnd = FindWindow(0,newtitle);
    		SetConsoleTitle(oldtitle);
    
    		return cwnd;
    #endif
    	}
    

    Jetzt aber - hoffentlich 🙄🙂

    MfG SideWinder



  • Juhu 🙂

    Sieht aus als würde es funktionieren, cool

    danke für die Hilfe

    mfg. steport


Log in to reply