Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 09.09.2007, 15:50 Titel: exe datei funktioniert nicht richtig |
|
|
Hey ich hab ein problem
wenn ich ein projekt speichere und im ordner die exe datei öffne, schlißt sich das programm beim ersten drücken der enter-taste. Auch wenn ich cin verwende.
wenn ich den quellcode mit Code::Blocks öffne funktioniert es tadellos. Ich hoffe ihr könnt mir helfen, damit meine Programme auch andere Leute auf z.B. usb-sticks komplett benutzen können
danke im vorraus |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 09.09.2007, 16:35 Titel: |
|
|
ja es schließt sobald ich enter drücke. Wenn ich bei der cin eingabe im programm angekommen bin, kann ich Zahlen und Buchstabe eingeben.
Aber sobald ich enter drücke (manchmal sehe ich den text der kommen sollte kurz aufflackern) schließt das programm.
ich kann mir das auch nicht erklärend und der thread hilft mir leider nicht wirklich weiter. |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 09.09.2007, 16:48 Titel: |
|
|
Dann zeig uns mal Code, ohne den können wir nix sagen
Hast du nach dem ersten cin noch was, das eine Eingabe abfangen könnte? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 09.09.2007, 16:49 Titel: |
|
|
hab jetzt trotzdem mal system("pause")
probiert und nachdem ich eine "beliebige taste" drücke schließt sich das programm.
hier der Quellcode:
Code: |
// test
#include <iostream>
using namespace std;
int main(void)
{
cout << "test test test test " << '\n';
system("pause");
cout << "test test test test " << '\n';
}
|
es ist also der erste befehl, den das system hingegennimmt.
das erklärt aber nicht, warum es funktioniert wenn ich es über code::blocks öffne, und nicht wenn ich die exe datei öffne.
Das Problem ist, das es ja bei jedem Programm ist das auf eine Reaktion wartet.
Aber hier mal ein ganz einfaches bei dem es auch nicht funktioniert:
Code: |
// Programm zur Berechnung der Kreisfläche
#include <iostream>
int RADIUS = 0;
const float PI = 3.14159f;
using namespace std;
int main(void)
{
cout << "Berechnung der Kreisflaeche\n ";
cout << "Geben Sie den gewuenschten Kreisraduius ein: ";
cin >> RADIUS;
cout << "Der Kreis hat eine Flaeche von " << PI * RADIUS * RADIUS << '\n';
}
|
hoff das hilft euch was rauszufinden |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 09.09.2007, 17:06 Titel: |
|
|
Nächstes Mal bitte den edit-Button nutzen, den du an jedem deiner Posts rechts oben findest. Zweimal posten ist nicht nötig
Zitat: | das erklärt aber nicht, warum es funktioniert wenn ich es über code::blocks öffne, und nicht wenn ich die exe datei öffne. |
Die Erklärung ist folgende:
Visual Studio wie offenbar auch Code::blocks haben hier für den Programmierer eine Bequemlichkeit eingefügt. Führt er das Programm aus der IDE aus, so wird diese die Abfrage automatisch an den Schluss setzen, damit alle Ausgaben noch sichtbar bleiben. Führst du das aus dem Explorer aus, ist diese Abfrage eben nicht mehr dabei.
Wenn du die Anwendung immer aus dem Explorer ausführen willst, kannst du eine zusätzliche Abfrage am Ende einbauen(wie im genannten Thread beschrieben).
Bei manchen Konsolenanwendungen ist sowas nicht erwünscht, da man sie z.B. aus der bereits geöffneten Konsole(z.B. MS-Dos-Eingabeaufforderung) startet. Dann wäre eine zusätzliche Abfrage sinnlos, da die Konsole hierbei sowieso offen bleibt. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 09.09.2007, 17:21 Titel: |
|
|
ok danke. so funktionierts:
Code: |
#include <iostream>
int RADIUS = 0;
int ENDE = 0;
const float PI = 3.14159f;
using namespace std;
int main(void)
{
cout << "Bitte geben Sie den Kreisradius ein" << '\n';
cin >> RADIUS;
cout << "Die Flaeche des Kreises betraegt" << PI * RADIUS * RADIUS << '\n';
cout << "Bitte Druecken Sie eine Taste" << '\n';
cin >> ENDE;
}
|
ganz zufrieden bin ich damit aber nicht dass der benutzer des Programms dann etwas eingeben muss.
Kann man das ändern oder muss das so sein?
oder hast du das anders gemeint |
|
Nach oben |
|
|
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 09.09.2007, 18:34 Titel: |
|
|
In der Main Funktion muss immer Systems('PAUSE'); stehen und nen return dazu.
Das ist deins
CPP: | #include <iostream>
int RADIUS = 0;
int ENDE = 0;
const float PI = 3.14159f;
using namespace std;
int main(void)
{
cout << "Bitte geben Sie den Kreisradius ein" << '\n';
cin >> RADIUS;
cout << "Die Flaeche des Kreises betraegt" << PI * RADIUS * RADIUS << '\n';
cout << "Bitte Druecken Sie eine Taste" << '\n';
cin >> ENDE;
}
|
und das ist meine verändrung.
CPP: | #include <iostream>
int RADIUS = 0;
const float PI = 3.14159f;
using namespace std;
int main(void)
{
cout << "Bitte geben Sie den Kreisradius ein" << '\n';
cin >> RADIUS;
cout << "Die Flaeche des Kreises betraegt" << PI * RADIUS * RADIUS << '\n';
cout << "Bitte Druecken Sie eine Taste" << '\n';
system("PAUSE");
return 0;
}
|
|
|
Nach oben |
|
|
manu Super JLI'ler
Alter: 35 Anmeldedatum: 09.03.2006 Beiträge: 327 Wohnort: allgäu (DE) Medaillen: Keine
|
Verfasst am: 09.09.2007, 19:34 Titel: |
|
|
City Hunter hat Folgendes geschrieben: | In der Main Funktion muss immer Systems('PAUSE'); stehen |
wer sagt denn sowas? (außer du *g) |
|
Nach oben |
|
|
nixkoenner Mini JLI'ler
Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 09.09.2007, 19:48 Titel: |
|
|
DANKE!!! Jetzt schauts endlich so aus wie bei den Beispielprogrammen, auch wenn bei denen das nicht im Quellcode steht.
steht schon auf meinem Spickzettel für besondere Sachen die ich mir nicht merken kann! gg
Ich danke allen nochmal für die Hilfe (bei toturials.de hab ich bis jetzt noch keine antwort gekriegt!!!)
bis zu meinem nächsten Blackout,
bye |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
|
Nach oben |
|
|
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 11.09.2007, 06:29 Titel: |
|
|
manu hat Folgendes geschrieben: | City Hunter hat Folgendes geschrieben: | In der Main Funktion muss immer Systems('PAUSE'); stehen |
wer sagt denn sowas? (außer du *g) |
Standt im Buch drin was ich mal hatte aber so gut war das nicht. |
|
Nach oben |
|
|
|