Frage zu system("cls") Befehl
-
hi,
kann mir jemand sagen wie ichs am besten hinbekomme,
dass wenn der bildschrim nicht SOFORT leergeräumt werden soll - weil man die ganzen meldungen noch lesen soll - irgendwelche timer oder sowas reinamcht?zB dass es erst noch 5 sekunden dauert dass der bildschrim gelöscht wird?
danke im vorraus!
-
das geht mit
for(int i=0;i<10000000;++i) cout<<"";oder mit
system("ping -c 4 127.0.0.1 > /dev/null || ping 127.0.0.1 > nul" )
-
@ch1ller,
Ich würde bei sowas keinen Timer machen, da die User unterschiedlich schnell lesen. Gibt dem User die Möglichkeit sich beim Programm zu melden, dass er mit dem Lesen fertig ist. Zum Beispiel durch das drücken der Taste <Enter>. Ist mir Standard C++ machbar:// ... std::cout << "Press ENTER to continue..." << std::flush; std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail()); std::cin.get(); // ...Noch zwei Links zu FAQ Einträgen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html (hat nur indirekt was mit dem Problem zu tun)
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39453.html@volkard,
Was soll der Unsinn?Grüssli
-
Dravere schrieb:
@volkard,
Was soll der Unsinn?Soll ich ihm sleep oder Sleep vorschlagen? nee, gell.
außerdem hat er nach 5 sekunden gefragt und nicht nach tastendruck. außerdem kennt er sich mit system schon aus. da erschien mir das naheliegend. kannst gerne meinen fast perfekten code noch ein wenig verbessern.
-
volkard schrieb:
Soll ich ihm sleep oder Sleep vorschlagen? nee, gell.
Wäre immer noch bei weitem besser. Mit
system("cls")hat er sich schliesslich sowieso schon ans Windows gebunden. Oder dann wäre zumindest der Hinweis gut gewesen, dass es so eine Möglichkeit mit Standard C++ nicht gibt. Aber nicht irgendwelchen sinnlosen Scheiss hinschreiben gehen, nur damit du dich über jemand anderes lustig machen kannst.Grüssli
-
ch1ller schrieb:
irgendwelche timer oder sowas
C++ kennt von Haus aus keine Funktionen für Timing. Dein Betriebsystem bietet aber bestimmt ein entsprechendes API an, Windows z. B. mit der Sleep-Funktion.
volkard schrieb:
Dravere schrieb:
@volkard,
Was soll der Unsinn?Soll ich ihm sleep oder Sleep vorschlagen? nee, gell.
Wirst du eigentlich absichtlich immer seltsamer?
-
Dravere schrieb:
Mit
system("cls")hat er sich schliesslich sowieso schon ans Windows gebunden.und ich weise schonmal den weg, diese bindung loszuwerden. guckst du genau hin und erkennst, daß mein code unter linux und windows geht.
-
wie dem auch sei, danke für alle beiträge habe ALLE ausprobiert klappt perfekt, habe jetzt die methode verwendet
for(int i=0;i<10000000;++i) cout<<""; system("cls");danke

-
@ch1ller,
Ich hoffe, das ist ein Witz? Denn wenn nicht, erkläre ich volkard zum grössten Troll in unserem Forum mit Moderator Status. Sollte man schon fast der Administration melden ...Grüssli
-
naja ist mehr oder weniger die simpelste syntax.. wieso Troll? -.-
-
Dravere darf aber auch konkrete Gründe nennen, weshalb diese Lösung schlecht ist und eine bessere Lösung anbieten, bzw. eine bessere schon angebotene Lösung gangbar machen für einen Einsteiger. Und ich würde dann sagen, daß ich die schlechte Lösungen nur gezeigt hätte, um eine Vorlage für die gute Erklärung zu liefern.
-
ch1ller schrieb:
naja ist mehr oder weniger die simpelste syntax.. wieso Troll? -.-
Weil es die schlechteste Lösung überhaupt ist. Und das volkard dir diese Lösung andreht, macht ihn zum Troll.
Überleg mal was in der Zukunft passieren wird mit dieser Schleife. Die Prozessoren werden deutlich schneller sein. Die Schleife wird deutlich schneller durchlaufen, die Wartezeit wird verkürzt. Irgendwann (und das kann schon sehr bald sein) sind die Prozessoren so schnell, dass die Wartezeit 0 Sekunden beträgt. Du machst dich mit diesem Code von deinem jetzigen Prozessor komplett abhängig.
Zudem ist es eine verschwendete Menge an Ressourcen. Du benutzt in diesen 5 Sekunden den ganzen Prozessor nur für dich. Das bringt das ganze Betriebsystem zum erlahmen.
@volkard,
Du bist ... tut mir leid, aber jetzt würde ich beleidigend werden. Ich bin nicht der Typ, welcher andere meldet, aber das macht das Fass schon ein wenig übervoll. Ist ja nicht gerade das erste Mal dass du dich hier als grosser Troll aufführst. Als Moderator hat man eine gewisse Verantwortung, doch diese scheint dir scheiss egal zu sein...Grüssli
-
Dravere schrieb:
Sollte man schon fast der Administration melden ...
als ob das jemanden interessieren würde... um es mit den worten meines lieblings-a********s auszudrücken: "besser volkard immer ignorieren, bringt eh nix bei ihm".
-
wir haben wohl andere ansichten über das leben und das programmieren. während ich eher auf "versuch macht kluch" stehe, bist du der dokmatiker, der dauernd "premature optimization" schreit und anfängern wie profis verbietet, zu experimentieren. natürlich erlaube ich mir, vom pfad der tugend abzuweichen und ungewöhliche wege zu gehen und zu zeigen. übrigens sind meine beiden vorschläge technisch gar nicht so uninteressant. guckst du mal auf die details.
außerdem habe ich in meinem unterirdischen labor eine optimierung für die zeitschleife entwickelt:
#include <ctime> using namespace std; void sleep(int sec){ time_t stop=time(0)+sec; while(time()<=stop) cout<<""; } int main(){ for(int i=0;i!=10;++i){ cout<<i<<'\n'; sleep(5); } }damit gehts auf den schnelleren prozessoren dann genausolangsam und man kann die zeit einstellen.
-
volkard schrieb:
während ich eher auf "versuch macht kluch" stehe, bist du der dokmatiker, der dauernd "premature optimization" schreit und anfängern wie profis verbietet, zu experimentieren.
Einfach nur eine oberdämliche Aussage.
Ich versuche selber gerne immer verschiedene Dinge. Schreie ganz sicher nicht immer "premature optimization" und wenn schreie ich nicht, sondern warne. Besser eine Warnung aussprechen als es einfach stillzuschweigen.
Zudem sind wir in einem Hilfeforum. Du siehst es also als Hilfe an, wenn du jemandem ein Bein stellst? Und ihm nachher erzählst, dass er halt besser einen Helm gekauft hätte?volkard schrieb:
natürlich erlaube ich mir, vom pfad der tugend abzuweichen und ungewöhliche wege zu gehen und zu zeigen.
Anders gesagt, statt das du einem Neuling hilfst, spielst du mit ihm rum und machst deine Experimente.
volkard schrieb:
übrigens sind meine beiden vorschläge technisch gar nicht so uninteressant. guckst du mal auf die details.
Das streitet hier auch keiner ab. Nur sind sie trotzdem nicht hilfreich. Du machst deine Experimente auf Kosten von Anfängern, das ist einfach abartig.
volkard schrieb:
außerdem habe in meinem unterirdischen labor eine optimierung für die zeitschleife gefunden:
Optimierung ... wohl eher Polling. Die Lösung ist für jemand, welcher Hilfe sucht, genauso Unsinn. Mag sein, dass es technisch interessant ist, aber hier sucht man nicht irgendwelche speziellen Lösungen, sondern hier wird Hilfe gesucht. Also gibt man auch allgemeingültige und sinnvolle Lösungen. Die Leute wollen hier nicht deine grossartigen Programmierkünste kennen lernen, sie wollen einfache, vernünftige und passende Hilfestellungen.
Grüssli
-
Ihr Kleinkinder!
streitet euch um Kleinigkeiten. Man kann doch den anderen darauf hinweisen, dass der Code des Anderen nicht "gut" ist und schlägt was besseres vor. Normalerweise Schreit man da nicht gleich bist du komisch oder du Troll...
Da musste ich mich einmischen!
-
ich wollte nur ne simple lösung und jetzt hab ich meinen eigenen
unterhaltungs-thread -.- naja dass es auf den prozessor ankommt is klar bei der variante.. aber is ja nur für mich, aber da es mir bewusst ist, ist es ohnehin egal, weil ich wenigsten sweis was ich da tue habe nen 6jahre alten amd athlon mit 1,6ghz relativ süßes gerät..also kein thema ich warte 3-4sek
...greez
-
Wenn du hier mit der Lösung zufrieden bist ist das ok, aber gewöhn dir die Lösung besser nicht an. Der einfache Grund: Diese Schleife verbraucht volle CPU Last und das ist ziemliche Energieverschwendung. Sleep geht zwar nur unter Windows und ist auch nicht sehr präzise, aber dafür braucht es weniger CPU Zeit.
-
Ich mag meistens sowohl die Lösungen von zB. Dravere als auch die von volkard. Bei volkard sind sie meistens zielorientiert, letztens hatten wir ja auch den Fall mit den C-Bibliotheken, wo es mit einer Zeile ging und mit schönem C++ in 10 Zeilen. Und bei Dravere und Konsorten sieht man halt immer schöne Lösungen in modernem C++, mit Templates, dem Standard entsprechend, etc.
Teilweise sind volkards (möglicherweise sarkastischen?) Lösung aber auch etwas überspitzt. Eine for-Loop als timer
