Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » CLS unter C++

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
04.06.2004, 16:52 Uhr
~phi
Gast


Hallo,
gibt es unter C/C++ so eine Art CLS Befehl?

Kann man eigentlich in der Konsole zeichnen?

Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.06.2004, 17:00 Uhr
~phi
Gast


Habs gefunden:

system("CLS");
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.06.2004, 17:04 Uhr
Pablo
Supertux
(Operator)


das ist nicht portabel und das funktioniert nur unter DOS.

Es gibt eine Möglichkeit mit Escape Sequenzen zu machen, nur dann wenn deine Shell auch diese erkennt.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.06.2004, 17:32 Uhr
~phi
Gast


ich benutze dev c++ unter windows

ich dachte man könnte z.B. ein Rechteck zeichnen im sinne von

draw (10,20,30,40);

oder ähnlich...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.06.2004, 19:16 Uhr
typecast
aka loddab
(Operator)


Ein Blick in die FAQ hätte dir die Lösung gegeben. Da stehen wirklich gute Beiträge drin.
*Klick*
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.06.2004, 09:10 Uhr
KaraHead



@typecast:
Die Methode im FAQ hat aber das selbe problem wie system("cls"), nähmlich es ist nicht portabel. Also spricht nix gegen die system("cls") methode
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.06.2004, 09:19 Uhr
virtual
Sexiest Bit alive
(Operator)


@KaraHead
Ja, nicht portabel ist die in der FAQ beschriebene Methode schon, aber

1. ein system("CLS") im Vergleich zu einem einfachen Schreiben einer Escapesequenz ist rein performancetechnisch sowie eine Schnecke im Vergleich zu Porsche.

2. Ich denke, die FAQ Lösung weist eine höhere Portabilität auf, weil unter mir allen bekannten UNIX Terminals funktioniert und unter Windows lediglich der Richtige Treiber da sein muß.

Mir persönlich dreht sich immer der Magen um, wenn ich so Krankheiten wie system("*") sehe, wobei "*" wahlweise CLS, PAUSE oder sonstwas ist. Man sollte sich mal vergegenwärtigen, was system so macht; dann wird man ganz schnell die Finger davon lassen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.06.2004, 09:24 Uhr
Pablo
Supertux
(Operator)


Und was genau macht system, dass es dir nicht gefällt?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
07.06.2004, 09:38 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Eine C Lösung wäre

C++:
#include <stdio.h>
#ifdef __unix__
   #define clrscr() printf("")
#elif __BORLANDC__ && __MSDOS__
   #include <conio.h>
#elif __WIN32__ || _MSC_VER
   #include <stdlib.h>
   #define clrscr() system("cls")
#else
   #define clrscr() printf("clrscr() - Fehler!!\n")
#endif

int main()
{
   /*Universale Routine zum Löschen des Bildschirms*/
   clrscr();
   return 0;
}



mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
07.06.2004, 09:42 Uhr
virtual
Sexiest Bit alive
(Operator)


Naja,
erstmal macht es eine Shell auf. Welche das ist, hängt von den Einstellungen des Users ab (Default shell oder in einer Umgebungsvariable konfiguriert). Dann wird die Shell die Zeichenfolge "CLS" (oder was auch immer) übergeben, die wird dann so geparst, wie du es von shells eben kennst und dann wird das CLS ausgeführt.

Wir starten damit als mindestens 1, manchmal (je nach kommando) 2 Prozesse. Wenn ich das mit dem einfachen Schreiben von 4 Zeichen in einen bereits geöffneten Outputstream vergleiche, dann fällt mir die Wahl schon mal diesbezüglich nicht schwer: siehe Vergleich Schnecke-Porsche.

Ein gravierendes weiteres Problem ist die Sicherheit: Dadurch das eine externe Shell aufgemacht wird, ist es ein potentielles Sicherheitsleck. Kostprobe? (Du bist ja frommer Linuxer):

Code:
1 $ echo 'rm *' >cls
2 $ chmod 755 cls
3 $ export PATH=$PATH:.
4 $ echo "int main(){system(\"cls\");}" >a.c
5 $ gcc a.c                                  
6 $ ll                                      
total 16
-rw-r--r--    1 virtual  users           27 Jun  7 09:42 a.c
-rwxr-xr-x    1 virtual  users         4825 Jun  7 09:43 a.out
-rwxr-xr-x    1 virtual  users            5 Jun  7 09:42 cls
7 $ ./a.out                                  
8 $ ll      
total 0
22 $


(Bitte nur in einem leeren Verzeichnis ausführen)
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: