Improved Console



  • hallo!

    Sorry, dass wieder ein Post über dieses Thema erscheint, hab aber mit der Suche mein Problem nicht gefunden.

    Ich binde die Dateien(hpp, cpp, h) in das Projekt ein,
    beim Kompilieren kein Fehler.

    Doch beim Ausführen folgendes:

    error C2065: 'GetConsoleDisplayMode' : nichtdeklarierter Bezeichner
    error C2065: 'CONSOLE_FULLSCREEN_HARDWARE' : nichtdeklarierter Bezeichner
    error C2065: 'GetConsoleWindow' : nichtdeklarierter Bezeichner
    Fehler beim Ausführen von cl.exe.

    Verwende Visual C++ 6.0 auf WinXP SP2.
    Hab auch versucht ein SDK zu laden, wobei ich nicht sicher war welches, und bei dem
    welches ich geladen hab, ist eine dll enthalten, wo ich nicht weiß wohin damit.

    Hab auch versucht das #define unter Kommentar zu setzen(Win9x Comatibel),
    funktioniert auch nicht.

    Bitte daher um Hilfe

    mfg



  • Das #define muss in dem Fall ohne Kommentare dastehen, nicht mit.

    Wenn es ohne dasteht brauchst du das neue PSDK - das du ganz offensichtlich entweder nicht installiert hast (Ist ein größeres ISO-File) oder nicht richtig konfiguriert hast(Nach der Installation musst du im Startmenü die Registrierung beim MSVC durchführen (Gibts ein Untermenü im PSDK), sonst weiß der MSVC nix vom neuen PSDK).

    Aber wenn du dirs einfach machen willst mach einfach die Kommentare beim #define weg. Sollten dann immer noch Fehler vorhanden sein poste diese.

    BTW: Du hast Compiler-Fehler gepostet und nicht Ausführungsfehler. "Beim Ausführen von cl.exe" heißt beim Ausführen des Compilers und nicht beim Ausführen des Programms 😉

    MfG SideWinder



  • SideWinder schrieb:

    Wenn es ohne dasteht brauchst du das neue PSDK - das du ganz offensichtlich entweder nicht installiert hast (Ist ein größeres ISO-File)

    OT: Für VC6 darf man nicht das neueste PSDK installieren, sondern die letzte unterstütze Version (siehe ganz oben im Win32 Forum):
    http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm



  • War mir nicht bekannt, danke für die Info :xmas2:

    MfG SideWinder



  • Steht sogar auf der Downloadseite des aktuellen PSDK... :xmas1: :xmas1:



  • Dort war ich offenabr noch nie, MSVC2005 sei dank :xmas1:

    MfG SideWinder



  • danke, hab unbeabsichtigt das falsche #define unter Kommentar gestetz,
    nämlich das # ifndef #define :p

    Hab jetzt das "richtige" #define auskommentiert,
    nun zwar keine Fehler mehr,

    dafür aber in der Ausgabe NICHTS!!

    Hier in etwa das Beispielprogramm:

    #include <iostream>
    #include "ic.h"
    using namespace std;
    
    int main ()
    {
    cout << "Hello World" << endl;
    textcolor(FG_RED);
    cout << "Hello World" << endl;
    
    return 0;
    }
    

    Wenn ich ausführe, kommt nur Press any key to continue 😕



  • Das liegt am bösen Destruktor, der ruft nämlich seinerseits reset() auf, was wiederrum clrscr() mit beinhaltet. Hmm wär ne Überlegung wert das wieder auszubauen (Entschluss gefasst: Wird in der nächsten Version wieder ausgebaut).

    #include <iostream>
    #include "ic.h"
    using namespace std;
    
    // automatisches schließen von konsolen-programmen verhindern (siehe auch faq)
    // musst den inhalt nicht unbedingt verstehen, wartet halt auf enter ;)
    void wait ()
    {
        cin.clear();
        cin.ignore(cin.rdbuf()->in_avail());
        cin.get();
    }
    
    int main ()
    {
        cout << "Hello World" << endl;
        textcolor(FG_RED);
        cout << "Hello World" << endl;
        wait(); // aufruf von wait(), wir warten also
    
        return 0;
    }
    

    Jetzt sollte es klappen 🙂

    MfG SideWinder



  • jaja, DAS versteh ich dann schon. ^^
    (Wenn auch nicht intern[WIE ignore das macht] aber das verstehen ja sicher nicht alle, oder? )

    Auf die Idee wär ich auch schon gekommen(hab getch(); eingebaut),
    aber funktionieren tuts trotzdem nicht, auch nicht mit wait!



  • hallo!

    Sobald ich ic.cpp ins Projekt einbinde werden keine Ausgaben mehr ins Konsolenfenster mehr gemacht!!

    Sprich: sobald ich unter VC++ 6.0 Projekt->Dem Projekt hinzufügen->Dateien

    die ic.cpp hinzufüge.

    Wenn ich im Code # include "ic.h" schreibe kommen noch Ausgaben.
    Auch wenn ich hpp und/oder h einbinde kommen noch Ausgaben

    Was soll das 😕



  • Hat sich wiedermal etwas eingeschlichen in den Compatible-Mode, ersetze die Zeile:

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

    in der ic.cpp (einfach danach suchen) mit:

    GetConsoleTitle(oldTitle,512);
    

    Sollte erstmal als Bugfix reichen. In den Weihnachtsferien bring ich dann endgüötig eine neue Version. Wahrscheinlich ohne Compatible-Mode, es reicht ja inzwischen den MSVC 2005 zu downloaden und zu installieren. Das Unterstützen von Steinzeit-Compilern macht keinen Spaß 😞

    MfG SideWinder



  • hallo!

    Ja, danke.
    Jetzt funktionierts.

    Wieviel kostet die 2005er?
    Ist wirklich soviel Unterschied?

    Achja, nochwas:
    Habe mal die PSDK gesaugt, und installiert.
    Muss ich nach der Installation noch irgendwas machen, damit ich #define (Win9xCompatible...) kommentieren kann?

    Wenn ichs jetzt kommentiere, kommen wieder die selben Fehler wie gestern(in diesem Post)

    😕

    Oder hab ich glatt das falsche geladen??



  • Wieviel kostet die 2005er?

    In der Express Edition ist der Compiler gratis. http://msdn.microsoft.com/vstudio/express/visualC/default.aspx

    Ist wirklich soviel Unterschied?

    7 Jahre Unterschied, 2 andere Versionen des Compilers liegen dazwischen, der C++-Standard wird endlich ordentlich unterstützt, usw.

    Muss ich nach der Installation noch irgendwas machen, damit ich #define (Win9xCompatible...) kommentieren kann?

    Im Startmenü unter dem Eintrag vom PSDK sollte sich ein Eintrag mit "Register with MSVC 32bit" befinden (Name kann auch ähnlich heißen, keine Ahnung wie genau). Auf jeden Fall muss du das ausführen bevor das neue PSDK aktiv wird.

    MfG SideWinder



  • habs auch grad gegoogelt, danke

    bin grad beim Installieren :xmas1:

    Sorry für die wahrscheinlich banale Frage,
    aber wie du sagts das C++-Standard unterstützt wird, heißt das C kann nicht mehr kompiliert werden?

    Übrigens: ist es in Ordnung C und C++ zu "mischen"?



  • vorsicht wenn du komplett auf die express Edition setzt die gibts nur ein jahr kostenlos zum download ^^



  • holh schrieb:

    aber wie du sagts das C++-Standard unterstützt wird, heißt das C kann nicht mehr kompiliert werden?

    Doch auch.

    Übrigens: ist es in Ordnung C und C++ zu "mischen"?

    Grundsätzlich nicht gut. Aber wenn du grundsätzlich C benützt kannst du die Improved Console trotzdem dazu linken, das tut dem nichts. Aber printf()/cout, malloc/new, free/delete, etc. zu mischen kann zu bösen Überraschungen führen.

    vorsicht wenn du komplett auf die express Edition setzt die gibts nur ein jahr kostenlos zum download ^^

    Er wird kaum ein Jahr zum Download benöitgen, und installieren und verwenden kann er sie solange er möchte.

    MfG SideWinder



  • und wenn man sonst beispielsweise in C programmiert aber trotzdem diverse C++ - Funktionen wie new statt malloc verwendet?

    Hab nun die 2005Express,
    Boah, tolle Oberfläche, finde mich aber überhaupt nicht zurecht.
    Ich weiß nicht mal wo man die Kompilierfehler sieht!
    Außerdem check ich nicht mal was ich für ein Projekt erstellen muss?

    Muss ich mich wohl einarbeiten...
    Kennt irgendjemand ein kurzes Manual o.ä. am besten in Deutsch?

    Was man nicht alles für ein schöneres Konsolenoutfit tut 😉



  • Wenn Du was einfaches mit der Console machen willst, empfehle ich die das .NET-Framework und die System::Console Klasse.
    Falls Du trotzdem unmanaged C/C++ machen willst musst DU noch das PSDK runterladen und installieren.



  • Jochen Kalmbach schrieb:

    Wenn Du was einfaches mit der Console machen willst, empfehle ich die das .NET-Framework und die System::Console Klasse.
    Falls Du trotzdem unmanaged C/C++ machen willst musst DU noch das PSDK runterladen und installieren.

    Das PSDK hat er doch bereits, und wenn er C++ programmieren will braucht er kein C# und kein System::Console. Verwirr die Leute doch nicht immer so :xmas2:

    MfG SideWinder



  • Ich hab doch hier gar nicht von C# geredet... System::Console geht auch mit C++(/CLI)... :xmas1:

    PS: Ich will doch gar nichts gegen Deine Klasse sagen 🙂 war ja nur so ne Idee 😋


Anmelden zum Antworten