Improved Console 4.0



  • ncurses-Fan schrieb:

    Benutz lieber ncurses. Das ist portabler und einfacher.
    www.gnu.org/software/ncurses

    scheiss auf portabler! das hier ist das Forum "DOS und Win32-Konsole" was will man hier mit deinem Murks?



  • pdcurses!!! 😃



  • langeweile schrieb:

    pdcurses!!! 😃

    jo, noch mehr murks, wenn man sich den Quellcode allein schon ansieht, bekommt man einen Lachkrampf und kann eigentlich nur noch den Kopfschütteln...

    Absolut schlechter Code, schlecht Kommentiert, Buggy (Kein wunder bei Frickelcode und globalen Variablen) und man soll für seine Konsolenanwendung noch was extra dazulinken von Dritten und ggf. eine DLL von Dritten mitliefern?

    Erbärmlich...



  • Allein schon bei sowas, bekommt ein richtiger Programmierer ja schon Alpträume:

    static int _get_font(void)
    {
    	int retval;
    
    	retval = getdosmemword(0x485);
    
    	/* Assume the MDS Genius is in 66 line mode. */
    
    	if ((retval == 0) && (pdc_adapter == _MDS_GENIUS))
    		retval = _FONT15;
    
    	switch (pdc_adapter)
    	{
    	case _MDA:
    		retval = 10;	/* POINTS is not certain on MDA/Hercules */
    		break;
    
    	case _EGACOLOR:
    	case _EGAMONO:
    

    Nicht mal an die Namenskonventionen für Compiler-Hersteller wurde gedacht - im gegenteil! Sie wird mit Füßen regelrecht getreten! Nicht mal Coding-Conventions scheinen für sowas bei diesem Frickel-Code zu existieren. Wie kann man nur so unklug sein und so einen Murks beführworten, "langeweile" und "ncurses-Fan"?

    Das solche Software überhaupt im Umlauf ist, ist mehr als nur grob fahrlässig... 👎



  • hi, ich habe ic jetzt in mein bcb 6 integriert, nur wo stehen die verfügbaren befehle für ic?

    kk. habs raus, man muss mit con.

    danke ^^ ( konntes aus den beiträgen ableiten )



  • hi,
    finde die IC ganz cool, kann sie vielseitig anwenden und hab sie um viele eigene funktionen erweitert, aber hab noch 2 fragen.

    In der MoverDemo seht ja am Ende folgendes:
    // Wie geht es weiter?
    // Man lernt sehr leicht, wenn man sich mit der Improved Console etwas
    // beschäftigt! Ganz einfach ein neues Projekt anlegen, die Improved Console
    // einbinden und loslegen. Gebt "con." in die main()-Funktion ein und schon
    // erhaltet ihr eine Liste von Methoden die ihr benützen könnt. Eine Liste
    // aller Shorties erhält ihr mit Eingabe von "ic::shorties::"
    //
    // Viel Spaß!
    Wie ist ds gemeint? wenn ich con. oder ic::shorties:: eingebe, kommt garnichts, so als ob da kein Befehl stehen würde.
    Ist aber nicht so wichtig weil ich mir das meiste vom code erschließen kann, nur bei ein paar wenigen funktionen weiß ich nicht was ich damit anfangen kann.

    Und wie macht man das weg, dass man nicht scrollen kann?
    Also diesem One-Screen-Mode, der ist komischerweise von anfang an einstestellt.

    mfg :xmas1:



  • In visual studio geht das nur 😃



  • k thx...
    falls es jemanden interessiert hier 2 funktionen von mir, die ihr einfügen könnt.

    void Console::grafladen(int x)
        {
             setCurPos(10, 24);
             con.setTextColor(FG_GREEN); // Neue Textfarbe setzen
             con.setBgColor(BG_RED); // Neue Hintergrundfarbe setzen
             cout << "                                                            ";
             //eine sekunde = 17
             int s;
             s = x * 17;
             setCurPos(10, 24);
             for (int i=0; i<=59; i++)
             {
                 cout << char(219);
                 Sleep(s);
    
             }
    
        }
    }
    

    int x = 1 wär dann für eine sekunde

    void Console::laden(int x)
        {
             con.setCurPos (70, 23);
             cout << "loading";
             for(int i =1; i<=x; i++)
             {
                con.setCurPos (77, 23);
                cout << ".  ";
                Sleep(333);
                con.setCurPos (78, 23);
                cout << ".";
                Sleep(333);
                con.setCurPos (79, 23);
                cout << ".";
                Sleep(333);
    
             }
    
        }
    

    das selbe gilt hierbei
    hab nochenpaar aber die sind unnütz 😃
    :xmas1:



  • die sind doch auch unnützlich, weil sie nur auf Improved C. funktionen zugreifen 🙄



  • öhmmm joa is doch net schlimm oder?



  • nein, aber man kann doch ja auch so die hintergrundfarbe setzen. für die funktion laden könntest du dir was besseres einfallen lassen, zbsp. nen zweiten Parameter, der zbsp etwas berechnet oder was spezielles ausgibt.



  • ya, soll ja nichts besonderes sein, soll auch nicht für wartezeiten in der konsole sein, sondern wenn zum beispiel im hintergrund nen prog geöffnen werden soll.
    Für berechnungen in der Konsole kann mans ya anpassen ;).



  • Gnomecoder schrieb:

    Für berechnungen in der Konsole kann mans ya anpassen ;).

    eben nicht 🙄



  • Gnomecoder schrieb:

    Und wie macht man das weg, dass man nicht scrollen kann?
    Also diesem One-Screen-Mode, der ist komischerweise von anfang an einstestellt.

    ya die frage hätt ich ja noch, was niemand was?
    mfg



  • Hallo,

    ich glaube nicht,dass das weggeht, den schließlich ist es bei allen Fenstern so.
    Die Voraussetzung wäre die Konsole zu strecken, dann musst sehr selten scrollen.

    Aber kommt drauf an, was du damit machen möchtest 😉



  • wie das ist bei allen fesntern so?!
    wenn ich ne normale konsolenapplication mache, und in ner for schleife bis 300 zähle, und zwischen jeder zahl nen zeilenumbruch mache, kann icih auch nach oben scrollen und alle zahlen sehen.
    Wenn ich die IC eingebunden habe geht das nicht mehr.
    Ich will jetzt nicht bis 300 zählen, aber ich brauchs für was anderes.
    Ich will nur wissen welche funktion dafür zuständig ist.



  • Heho, wenn ich die IC inkludiere und das auf der HP angegebene Testprogramm ausführe, erhalte ich folgende Fehler:

    Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall ic::Console::setTextColor(enum ic::TextColor)" (?setTextColor@Console@ic@@QAEXW4TextColor@2@@Z)" in Funktion ""void __cdecl ic::shorties::textcolor(enum ic::TextColor)"

    (?textcolor@shorties@ic@@YAXW4TextColor@2@@Z)".
    1>Sudoku.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""class ic::Console & ic::con" (?con@ic@@3AAVConsole@1@A)".

    [...]Visual Studio 2005\Projects\Sudoku\Debug\Sudoku.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.

    Mein Code ist folgender:

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

    und ich verwende Visual C++ Express.
    Hat jemand ne Ahnung was ich falsch mache ??
    Die Libraries sind im Projektordner!^^
    Vielen Dank für eure Hilfe 🙂



  • es reicht net wenn die header im projektordner sind, sie müssen mit eingebunden sein!



  • ??? sind sie doch oo oder eine andere einbindung als "#include" ?



  • Ja, es gibt noch eine andere Einbindung - für den Linker (d.h. du mußt die CPP Datei mit in dein Projekt reinpacken, damit sie parallel zum Hauptprogramm übersetzt werden kann).
    (das #include ist eine reine Textersetzung - und damit informierst du den Compiler, daß diese Funktionen existieren. Der Linker benötigt aber zusätzlich noch den Inhalt der Funktionen, und den bekommt er, indem du ihm neben der Hauptdatei auch die obj (erstellt der Compiler aus allen CPPs des Projekts) oder lib übergibst))


Anmelden zum Antworten