paar fragen zu Konsolenanwendungen
-
Hi an alle,
ich will jetzt mal so nen bischen mit Konsolen anwendungen proggen, ich hab mal in nem server gesehen z.B. "autocreate - bla bla bla" das dabei nur autocreate grün is und der rest normal weiss.Oder gibt es ein Tut für konsolen anwendungen?!?
danke im voraus
-
nagut das mit den farben hab ich jetzt auch heraus gefunden,
textcolor(2); cprintf("autocreate ");
trotzdem gibt es ein tut dafür?
-
C-Laufzeitreferenz unter Hilfe im BCB-Startmenü-Ordner.
Und dann z.B. "textcolor".
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
also es steht nun in der konsole "start", wenn nun einer im fenster "start" eingibt schliesst sich das fenster, nur das soll es nich, nachdem man start eingegeben hat soll sich ein befehl selbständig machen. kann mir bitte einer helfen wie ich sowas hinbekome! Danke im voraus!
-
das fenster schließt wohl, weil sich dein programm beendet.
was meinst du mit "befehl selbständig machen". unklar.
farben findest du für winapi übrigens im dos konsolenfaq unten auf der seite.
bye
-
sorry war zu müde^^
also ich meinte wenn ich in der konsole start eingebe dann soll sich "void SplashScreen" auslösen und seine arbeit machen, das meinte ich damit :).
Nur erstens kann ich nicht in die konsole schreiben und zweitens wie löst man dann void... aus??
-
Also nochmal zum mitschreiben:
- Du startest deine Konsolenanwendung.
- Daraufhin erscheint der Text "Start" farbig.
- Nun soll der Benutzer etwas eingeben können.
- Wenn der Benutzer "start" eingibt, soll eine bestimmte Funktion ausgeführt werden.Und wo liegt jetzt genau das Problem?
1. Beim Ausgeben
2. Bei der Eingabe
3. Bei der Auswertung der Eingabe
4. Beim Aufrufen einer Funktion
-
3. Bei der Auswertung der Eingabe
4. Beim Aufrufen einer Funktiondas wäre es...
also ich habs ma probiert mitchar data[512]; if(strcmp(data,"start",5)) { LaunchWorld(); }
klappt aber nicht, kommt aber auch kein fehler
-
Ich kommentier mal, was du gemacht hast:
majin schrieb:
// Definition des char-Vectors data mit 512 Elementen char data[512]; // Vergleich des Inhalts von data mit "start" if(strncmp(data,"start",5)) { //Aufruf der Funktion LaunchWorld() LaunchWorld(); }
Aber irgendwas geht noch ab!
Ich weiß jetzt übrigens, dass du mit 1., 3. und 4. kein Problem hast ;).
-
jo... es tut sich aber nichts...
habs schon mit mehreren methoden probiert, klappten aber alle nich!
-
'strncmp()' gibt 0 zurück, wenn der vergleich geklappt hat
if (0 == strncmp (data, "start", 5)) { ... }
wenn das immer noch nicht geht, dann poste mal wie du "start" in 'data' rein kriegst
-
ne, leider geht das auch nich...
kommt aber auch kein fehler.was meinste du mit:
net schrieb:
wenn das immer noch nicht geht, dann poste mal wie du "start" in 'data' rein kriegst
?
-
majin schrieb:
ne, leider geht das auch nich...
kommt aber auch kein fehler.am besten du debuggst das mal. setz' 'nen breakpoint auf der 'if'-zeile und dann schau dir 'data' an. step' dann weiter um zu sehen ob er in den anweisungsblock geht.
majin schrieb:
was meinste du mit:
net schrieb:
wenn das immer noch nicht geht, dann poste mal wie du "start" in 'data' rein kriegst
?
na irgendwie musst du's ja da reinkriegen. mit scanf() oder strcpy() oder sowas
-
oh man...
sorry bin halt noch anfänger...
was bringt das denn dieses scanf();???
-
@net + majin
AJ schrieb:
Ich weiß jetzt übrigens, dass du mit 1., 3. und 4. kein Problem hast ;).
D. h. Punkt 2 meiner früheren Fragen ist das Problem: Das Einlesen!
@majin
Du hast keine Funktion zum Einlesen von der Tastatur aufgerufen, folglich kann der Benutzer auch nichts eingeben und dann steht natürlich auch nicht das erwartete in data!Am einfachsten und sichersten liest du etwas von der Tastatur mit fgets() ein.
Anwendungsbeispiel:
#include <stdio.h> int main(void) { char text[256]; fgets(text, 256, stdin); printf("Das hast du gerade eingegeben: %s", text); return(0); }
Zur Erklärung:
text = Ein Array bzw. Vector in dem du eine Zeichenkette (wird meistens auch string genannt) speicherst. Du kannst maximal 255 Zeichen dort speichern + das sog. Stringendezeichen ('\0' bzw. 0). Wie der Name schon sagt, bezeichnet dieses Zeichen das Ende des Strings und ist wichtig für Funktionen wie z. B. printf().
stdin = Standard Input (im Normalfall die Tastatur)Der Rest dürfte klar sein. Wenn nicht, einfach nachfragen :).
-
sry hab ich nur nich gepostet, das hatte ich natürlich schon...
for (int x = 0;x<6000;x++) { char string[80]; gets(string); }
-
1. Warum die Schleife??
2. Verwende besser fgets() anstatt gets(). Grund: Bei gets() riskierst du Bufferoverflows, die zu seltsamen Effekten führen können und das wollen wir doch vermeiden, oder?!?
-
ok ... ich probier es ma...
die schleife is dafür damit ich undendlich viel eingeben kann, wenn sie nich da wäre dann könnte ich nur eine zeile schreiben und enter drücken, dann würde es sich wieder sclhiessen
-
ich glaube, das problem liegt daran, dass die schleife noch 5999 Zeilen erwartet.
Das Problem kann behoben werden, indem du das if([...]) in die Schleifa packst, also etwa:
for(int x = 0;x<6000;x++) { char string[80]; gets(string); if(strncmp(string,"start",5)) { //Aufruf der Funktion LaunchWorld() LaunchWorld(); } }
Vielleicht löst das dein Problem.
ACHTUNG: das if([...]) muss natürlich deine EINGABE kontrollieren, also string und nicht mehr data