Improved Console v2.0 Beta
-
ich denke die kontools.h isteinfach genug
konmanip.h ist dann für die die mehr wollenob das jetzt ein gutes bsp für anfänger ist was gutes desing oder gutes c++ ist, ne ist es nicht, höstens dafür das ich für wenig nutzen sehr viel aufwand treibe
ich denke es gibt sprachen die es einen leichter gemacht hätten oder es schon im keim erstick hätten (dann wurde ich meine zeit damit jetzt nicht verschwenden)ps. habe den code geupdatet
ps. wurde sich drüber freuen wenn sich jemand als linux beta tester melden würde[ Dieser Beitrag wurde am 24.02.2003 um 23:21 Uhr von Dimah editiert. ]
-
Original erstellt von SideWinder:
**Ja, bei mir hat sich noch nie jemand über Marcus IC aufgeregt, warum also den Inhalt künstlich aufblähen? Wie kommst du überhaupt darauf? Wenn man Namespaces raus nimmt, kann doch die Liabry nicht weniger?...
**Marc++us' Version ist für Anfänger - der Umfang ist nicht schlecht, aber für ne ordentliche Library wünsche ich mir mehr features.
Aufblähen ist gut, solange das Zero-Cost-Principle nicht gebrochen wird. Und Dimah bricht es (soweit ich jetzt gesehen habe) nicht.
-
Original erstellt von Shade Of Mine:
**Marc++us' Version ist für Anfänger - der Umfang ist nicht schlecht, aber für ne ordentliche Library wünsche ich mir mehr features.Aufblähen ist gut, solange das Zero-Cost-Principle nicht gebrochen wird. Und Dimah bricht es (soweit ich jetzt gesehen habe) nicht.**
also Umfangreicher als IC 1.0 ist es nicht, beim porten musste ich sogar sachen verschwinden lassen z.b. settitel
oder habe es einfach so rausgenomen z.b. void home() { gotoxy(0,0); }
die sache mit aufblähen ist so, bringt es wirklich einen nenenswerten vorteil wenn ich in kon noch ein zweiten namespace haben curser? bei dieser code umfang bestimt nicht, das sind aber techniken auf die ich nicht verzichten will bei größeren projekten, da ich bei keinen projekten üben will werde ich jetzt daruf nicht verzichten (ok colors da habe ich übertieben)
-
ich als fortgeschrittener anfänger hab mir den umgang mit iostreams
schleunigst abgewöhnt !ich bleibe beim ansi c
ausserdem ist man da viel flexibler ...
hab deshalb meine wincolio.lib selbst editiert und alle iostream-anweisungen
rausgeschmissen :pstdio rockZ
... ich sollte so langsam die lincolio.lib unter linux testen, ob die geht...
hehe dann ist mein prog endlich win+lin - compilierbarahh und nochwas:
#pragma comment(lib, "wincolio.lib") rockZ!
#ifdef WIN32
#pragma comment(lib, "wincolio.lib")
#pragma comment(lib, "wsock32.lib")
#include <winsock.h>
#else
#pragma comment(lib, "lincolio.lib")
...ich liebe direktiven...
mfg haMMer
[ Dieser Beitrag wurde am 25.02.2003 um 19:27 Uhr von Hammer editiert. ]
-
Original erstellt von Hammer:
**ich als fortgeschrittener anfänger hab mir den umgang mit iostreams
schleunigst abgewöhnt !
**wir können das gerne ausdiskutieren, aber bitte nicht hier
-
<etwas ot>
Was passiert in folgendem Code?#include <iostream> #include <fstream> #include "kontools.h" using namespace std; using namespace kon; int main() { ofstream out("foo.txt"); out << setcolor( colors::red ) << "Was passiert hier?\n"; out << goto_xy( 10, 10 ) << "Und hier?\n"; return 0; }
Du benutzt überall einen allgemeinen ostream&. Dann müsste dieser Code mit fstream doch compilieren, oder?
(Ich kanns grad nicht testen, keine Zeit mehr)Ich wollte nur darauf hinweisen, weil irgendein DAU bei dieser (IMO gelungenen) Lösung mit manipulatoren bestimmt auf die Idee kommt: "Ich mache mal farbige Text-Dateien".
-
es klappt nicht
es kommt die meldung "dll not found exitint"
-
Beim Starten oder beim Kompilieren?
Der Code war auch eher als Pseusocode gedacht, um die (mögliche) Problematik mit anderen streams als cout aufzuzeigen.
-
cd9000 du hast recht, es passiert nix aber ich will den kon::manipulator nicht noch verkomplizieren weil ein jemand das probieren sollte, er wird dann feststellen es geht nicht
ander seits könnte ich ihn ja einfach html code machen lassen
-
und wieder ein paar bugs gefunden und das desing verändert stat xdim_size() & ydim_size() gibts jetzt in namespace cursor eine neue funktion getmaxpos() die eine pos structur zurück gibt
der linux port ist nicht so leicht wie man das glaubt, so schwer ist das ja auch nicht die paar funktionen in kontools.h zu linuxen aber leider funktioniert nicht so wie man glaubt
bei der ncurses lib muss ich mit deren ausgabe funktion arbeiten wenn ich farben haben will (die lösung ein eigenen streambufer zu schreiben kommt nach ganz hinten)
ANSI Escape Sequenzen wollen bei einen von meinen beta testern nicht gehenverdamt da lobe ich mir windows, entweder es geht dann steht es in der msdn oder es geht nicht, bei linux gibt es kein es geht nicht, da darf man sich durch 5 libs durch fighten
-
Original erstellt von Shade Of Mine:
**warum escape sequenzen?
müssen laut POSIX die Treiber für die Escape Sequenzen installiert sein?wenn nein, dann ist das ein KO Kriterium.**
Weil's mit escape-sequenzen sehr viel einfacher und vor allem weniger fehlerhaft ist.
Kein Plan ob man da irgendwelche Treiber installieren muss. Bei mir gehen die, ohne mein Zutun.
Und wenn, letzendlich muss ncurses ja auch erst installiert werden.ncurses hat den Nachteil, wie Dimah auch schon festgestellt hat, dass man für die Ausgabe nur noch die ncurses-Funktionen benutzen kann.
-
@DrGreenthumb ich glaube die haben was gehen esc-sequenzen weil man unter windows den leuten noch verklicken musste das sie die ansi.sys in ihre config.sys eintragen mussten
-
ahja ich habe jetzt ein zip gemacht, docu kommt irgend wann http://home.arcor.de/gerard.choinka/Improve%20Konsole%20v2.0.zip
[ Dieser Beitrag wurde am 26.02.2003 um 19:53 Uhr von Dimah editiert. ]
-
was haltet ihr von dieser docu?
namespace kon // namespace kon steht für konsole { namespace cursor // in diesen namespace sind funktion die sich mit cursor bescheftigen { struct pos { pos(); pos(short int x_, short int y_); short int x; short int y; }; // was soll ich dazu noch sagen eine structur mit zwei memeber x und y // x und y stehen für die x-kordinate und y-kordinate const pos getmaxpos(); // dieser Funktion gibt die maximale x- und y-kordinate zurück // z.b. wenn den cursor z.b. in die rechte untere ecke haben will so macht man das so // pos p = getmaxpos(); // gotoxy( p.x, p.y ); const pos getpos(); // diese funktion gibt die aktuele position des cursers wieder void setpos(const pos & c); // diese funktion setzt die aktuele position des cursers enum mode { off, insert, overwrite }; // konstanten für die funktion setmode // off schalte den curser weg // insert das ist der standard curser // overwrite der curser wird zu ein grossen block void setmode(mode m); // dieser funktion kann man die konstanten übergeben } namespace color // in diesen namespace werden farbkonsten definiert { enum type { black, darkgrey, grey, white, darkred, darkgreen, darkblue, darkyellow, darkturquoise, darkpink, red, green, blue, yellow, turquoise, pink, current // die aktuele farbe }; } void cls(color::type color = color::current); // mit dieser funktion kann man den bildschirm löschen // als paramter kann man ihr eine farbkonste aus den namespace colors übergeben manipulator gotoxy(short int x, short int y); // setzt den curser auf eine bestimte postion // zu rückgabe wert sieh unten manipulator setcolor(color::type text_color, color::type back_color = color::current); // verändert die farbe von text und hintergrund // der erste paramter steht für text und der zweite optionale für den hintergrund // der manipulator der von setcolor und gotoxy zurück gegeben wird macht diese funktion // zu was besonden // werden diese funktion ganz normal aufgerufen // z.b. // int main() // { // setcolor( colors::red ); // cout << "In Rot\n"; // } // so verhalten sie wie man das von ihnen erwartet // werden sie aber in ein stream übergeben z.b. // int main() // { // cout << setcolor( colors::red ) << "In Rot\n"; // cout << "Wieder in Standard Farben\n"; // } // so verändern sie die Farbe nur bist zum ende der Anweisung (bis zum Simikolon) // nur der text "In Rot" wird in rot geschreiben. // setcolor und gotoxy funktionieren zwar auch mit andern stl stream wie fstream // haben jedoch keine wirkung auf sie. }
[ Dieser Beitrag wurde am 26.02.2003 um 23:12 Uhr von Dimah editiert. ]
-
Hi, kannst du die Doku nicht einheitlich mit Doxygen erstellen?
Und dieser Kommentar ist wirklich unnütz.// was soll ich dazu noch sagen eine structur mit zwei memeber x und y
-
Original erstellt von <Hannes>:
**Hi, kannst du die Doku nicht einheitlich mit Doxygen erstellen?
**eigentlich fand ich den header ohne komentare schon aussagekräftig genug und ich werde Doxygen nur anfassen weil ich das bestimt mal brauchen werde
-
jetzt noch eine frage
soll links oben 0/0 (c/c++ array style) sein oder 1/1 (warmduscher style)
soll x horizontal und y vertikal sein(wie bei einen kordinaten system & winapi)
oder vertauscht wie bei conio.heinerseits ist IC 2.0 ja auch nur ein port von conio.h
anderseits finde ich es mist und wenn ich ne möglichkeit sehe alten mist über bord zu werfen dann will ich es nutzenumsteiger von conio.h auf IC 2.0 werde ich wohl kaum haben, ic2.0 hat ja nix überragendes neues und wer bitte der mit konsolen grafik rumspielt ist dran interesiert seine programme auf linux zu porten?
ich schwanke
-
Ursprung auf 1/1, ich will als letztes Feld meistens die Größe also 80/25 und kein 79/24.
Desweiteren ist x die Breite und y die Höhe. Also im Normalfall wäre die Größe dann x/y 80/25.
MfG SideWinder
-
der unix port braucht nur noch eine funktion cursor::getpos() :(, esc sequenzen scheiden aus, ncurses lib nur wenn ich deren funktionen benutze
was meint ihr soll ich ein strembuffer schreiben der diese funktion benutzt?
-
Ich wäre noch für die Funktionen
cursor::getmode(); getcolor();
@Dimah: Ich finde deine Doku gut gelungen.