-
Gesamte Inhalte
207 -
Benutzer seit
-
Letzter Besuch
Über computercrustie
- Geburtstag 16.12.1977
-
Hab mich vertippt, so muss es aussehen: http://www.ohse.de/uwe/articles/kbhit.html Das mit dem kopieren kannst du versuchen, aber ich glaube nicht, dass das so einfach klappt. Wenn ja, dann gut. Wenn nicht, dann musst du versuchen, die fehlenden Header zu bekommen, aber wie gesagt, habe kein Unix-System und kann dir da nicht weiterhelfen.
-
Dann hast du dich sicherlich verschrieben. Wie gesagt, implementiere die Beispiele aus den Links die ich gepostet habe, da getchar() jeden Tastendruck zwar im STDIN stream ablegt, ihn aber auch gleichzeitig auf dem Bildschirm ausgibt. [EDIT] ICH habe mich verlesen, der Satz war nicht ganz eindeutig. Hätte auch sein können, dass du versuchst, anstatt der Sternchen das Passwort angezeigt zu bekommen. Sorry :floet: [/EDIT]
-
:confused: Wie jetzt ? Genau das wolltest du doch !?
-
Der erste Code, den ich gepostet habe läuft so auf jeden Fall auf einem "Windowswürfel" und müsste sich (mit Weglassen der Unterstriche vor _getch() und _kbhit()) auch ohne Probleme mit dem Builder bauen lassen.
-
So trivial ist das Problem leider nicht, deshalb wurde unter DOS auch getch() implementiert, da es im Gegensatz zum ANSI-C Befehl getchar() die Zeichen aus stdin nicht "echot", also auf dem Bildschirm ausgibt. Und genau das ist auch dein Problem. Du musst dir den getch()-Befehl UND den kbhit()-Befehl aus einem der Beispiele aus den obigen Links "nachbauen" und diesen dann benutzen. An dieser Stelle kann ich dir so nicht weiterhelfen, da ich nur Windows laufen habe und so diese Unix-spezifischen Dinge nicht nachvollziehen kann.
-
Ich hab was gefunden, ist aber zu lang zum posten. Die beiden Artikel beschrieben die Simulation der getch() und kbhit() Befehle unter Linux: http://www.ohse.de/uwe/articles/getch.html http:://www.ohse.de/uwe/articles/kbhit.html Oder du versuchst mal folgende Variante: http://www.pwilson.net/kbhit.html [EDIT] Oder probier mal das Beispiel, ist etwas kürzer: http://www.flipcode.org/cgi-bin/fcarticles.cgi?show=64166 [/EDIT]
-
Ich habe das jetzt mal ausprobiert und noch etwas ganz anderes festgestellt, das könnte aber Betriebssystem abhängig sein. Was passiert auf dem Bildschirm wenn du getchar() benutzt ? Erscheinen bei der Passworteingabe Sternchen ("*") oder die Buchstaben die du eingegeben hast ?
-
dann schreiben wir die kbhit() halt selbst: int kbhit(void) { if(getchar()!=EOF) //nächstes zeichen aus stdin holen und auf EOF prüfen { ungetc(stdin); //Zeichen vorhanden, wieder zurückschreiben return 1; //wahr zurückgeben } return 0; //ansonsten falsch } Ich hab's nicht ausprobiert, müsste aber funktionieren
-
Nimm als erstes mal wieder den <string.h> Header rein, damit strcpy und strcmp bekannt sind. Jetzt includiere bitte die <stdio.h> und ersetze getch() mit getchar() oder getc(stdin). Probier das bitte mal aus. Sollte es funktionieren, dann habe ich auch schon die Lösung für dein kbhit() Problem.
-
Nein, aber so weit ich es lesen konnte, gibt es unter Linux kbhit() und getch() nicht (es sei denn, eine entsprechende Implementation ist vorhanden:) http://www.tek-tips.com/viewthread.cfm?qid=939697&page=1
-
Compilierst du unter Linux ?
-
Ich stehe mehr oder weniger vor folgendem Problem: für ein Handygame möchte ich Figuren über den Bildschirm laufen lassen, die sich immer am Boden bewegen, in Löcher fallen können oder auch kleine Steigungen überwinden können. Aufgrund der geringen Größe der Figuren reicht es hier, diese mit einem Rechteck zu definieren. Das Problem ist eher der Hintergrund. Meine momentane (gedankliche) Lösung sieht so aus, dass ich mir die Pixel, die unter dem Kollisionsrechteck der Figur liegen, in einen Buffer lege und jetzt den Unteren Rand des Kollisionsrechtecks sowie den in Bewegungsrichtung liegenden (also linken oder rechten) Rand mit dem Buffer vergleiche. Ist also zum Beispiel kein Pixel im Buffer am unteren Rand gesetzt, "fällt" die Figur ein Pixel nach unten. Sind am Rand in Bewegungsrichtung mehr als angenommen 3 Pixel gesetzt, kann die Figur hier nicht weiter, ansonsten wird sie die Anzahl der gesetzten Pixel nach oben und eins weiter in Bewegungsrichtung bewegt. (Das gleiche auch für eine Anzahl Pixel von oben, falls die Figur zu groß ist um hindurchzupassen). Das Problem hierbei ist die Performance, da sich mehr als eine Figur bewegen sollen und das ganze wie gesagt auf dem Handy unter J2ME laufen soll. Hat jemand eine bessere Lösung ? Danke schonmal im Voraus
-
bmg4ever und Guybrush Threepwood haben ja schon alles gesagt, deshalb hier nur die Implementation des Passwortvergleichs: char pass_cmp[_MAXZEICHEN]; //variable für das vergleichspasswort deklarieren strcpy(pass_cmp,"passwort"); //"passwort" nach pass_cmp kopieren //... //hier den vorigen code bis ende der while-schleife einfügen //... std::cout<<std::endl<<"Das eingebene Passwort ist "; if ( 0 == strcmp(pass,pass_cmp) ) //pass mit pass_cmp vergleichen std::cout<<"richtig."; else std::cout<<"falsch."; std::cout<<std::endl; while(!_kbhit()); //warten bis taste gedrückt } In diesem einfachen Fall kannst du den String-Vergleich mittels strcmp auch so durchführen: if (strcmp(pass,"passwort") == 0) ... Da sparst du dir die Deklaration einer Passwortvariablen.
-
#include <stdio.h> #include <conio.h> //maximale Anzahl an Zeichen im Passwort #define _MAXZEICHEN 10 void main(void) { char c = 0; char pass[_MAXZEICHEN]; int cnt = 0; std::cout<<"Bitte geben Sie Ihr Passwort ein:"; while( 1==1 ) //endlosschleife { while(!_kbhit()); //warte bis taste gedrückt c = _getch(); //tastencode nach c auslesen if (c==13) //wenn return gedrückt dann ende break; if (cnt<_MAXZEICHEN) { std::cout<<"*"; //Sternchen ausgeben pass[cnt] = c; //zeichen merken cnt++; //zähler erhöhen } } pass[cnt] = 0; //letztes element in pass[] auf \0 setzen std::cout<<std::endl<<pass<<std::endl; while(!_kbhit()); } Das eingegebene Passwort steht am Ende in "pass" und kann dann verglichen werden.
-
OLE-Automation - Klassendefinition einer "coclass"
computercrustie antwortete auf computercrustie's Thema in C++: Compiler, IDEs, APIs
Das Problem habe ich soeben gelöst, indem ich die Wrapper-Klassen mit dem Klassenassistent von VC++6 (anstatt dem von VC++7) erstellt habe, dann da bekomme ich wie du bereits gesagt hast, einen LPDISPATCH Zeiger zurück und kann damit jetzt auf die Projekt-Struktur zurückgreifen. Aber jetzt habe ich das nächste Problem: Was muss ich implementieren, um die Events von MS-Project abzufangen ? Ich habe mich durch die MSDN gehangelt und versucht, die Beispiele die es dazu für Excel und Word gibt für MS-Project umzusetzen, allerdings scheitert es dort an der Eintragung meines Event-Objekts am Connection Point (Result(HRESULT) ist ungleich Null).