Problem mit Programm
-
Hallo,
ich habe hier ein Problem mit meinem Code:#include <stdio.h> #include <stdlib.h> #include <iostream> #include <windows.h> #include <fstream> #include <string> using namespace std; int main() { int anzahl2 = 1; while(anzahl2 == 2) { int anzahl = 1; string testit; string thereal="host-239.battle.net:4000"; system("netstat -a > net1.txt"); ifstream dat_ein; string dat1 = "net1.txt"; dat_ein.open(dat1.c_str(), ios_base::in); while(anzahl == 900) { dat_ein >> testit; if(testit == thereal) { MessageBox(NULL,TEXT("Richtiger Server!"),TEXT("D2-Info!"),0); return 0; } anzahl = anzahl + 1; } system("del net1.txt"); } return 0; }Das Programm schließt sich sofort nach Aufrufen wieder, aber es sollte ein Popup kommen, oder solange durchlaufen und suchen, bis das gewünschte Ergebnis gefunden ist (oder auch nicht
).Hoffe auf Hilfe,
Syphillitic
-
-
ähm..du hast meinen Post, bzw. Code nicht ganz gelesen, oder?
Entweder müsste das Programm die ganze Zeit durchlaufen, oder es müsste mir das Popup aufwerfen.
Und wenn es das Popup aufwirft, muss ich zuerst auf OK klicken, bevor sich die Konsole beendet.Mfg
-
c.rackwitz schrieb:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html
schon .. aber daran liegt es nicht. Das Problem von Syphillitic liegt gleich am Programm-Anfang
Skaterchunkie schrieb:
int main() { int anzahl2 = 1; while(anzahl2 == 2) // <- anzahl2 ist 1; und diese while-Schleife wird nie durchlaufen { // usw.darüber hinaus; for-Schleifen wären hier in beiden Fällen besser geeignet.
:xmas2: Werner
-
Das dürfte daran liegen, dass die Bedingung Deiner While schleife nicht zutrifft und somit auch nicht durchlaufen wird
-
Lass gefälligst die BNet Server in Ruhe laggt schon genug :xmas1:
Sockets wäre besser...
Gruß
-
Ok, danke, es funktioniert jetzt teilweise:
#include <stdio.h> #include <stdlib.h> #include <iostream> #include <windows.h> #include <fstream> #include <string> using namespace std; int main() { int anzahl2 = 1; while(anzahl2 == 1) { int anzahl; string testit; string thereal="host-239.battle.net:4000"; system("netstat -a > net1.txt"); ifstream dat_ein; string dat1 = "net1.txt"; dat_ein.open(dat1.c_str(), ios_base::in); for(anzahl = 1; anzahl <= 900; ++anzahl) { dat_ein >> testit; if(testit == thereal) { MessageBox(NULL,TEXT("Richtiger Server!"),TEXT("D2-Info!"),0); return 0; } anzahl = anzahl + 1; } system("del net1.txt"); } return 0; }In der Konsole zeigts jetzt immer an: Der Prozess kann auf die Datei nicht zugreifen, da sie von einem anderen Prozess verwendet wird.
Also, kann das Programm nicht die strings vergleichen...
Hilfe, was hats jetzt wieder? Müsste doch so stimmen.
Mfg
-
-
Skaterchunkie schrieb:
In der Konsole zeigts jetzt immer an: Der Prozess kann auf die Datei nicht zugreifen, da sie von einem anderen Prozess verwendet wird.
Also, kann das Programm nicht die strings vergleichen...
doch doch; aber der system-Aufruf 'system("del net1.txt");' kann die Datei nicht löschen, solange Du sie in Deinem Programm offen hast.
Spendiere einen eigenen Scope für die Variable 'dat_ein'; dann sollte es gehen.#include <iostream> #include <windows.h> #include <fstream> #include <string> int main() { using namespace std; for( int anzahl2 = 1; anzahl2 < 2; ++anzahl2 ) { const string thereal="host-239.battle.net:4000"; system("netstat -a > net1.txt"); { ifstream dat_ein( "net1.txt", ios_base::in ); for( int anzahl = 1; anzahl < 900; ++anzahl ) { string testit; if( (dat_ein >> testit).fail() ) break; if(testit == thereal) { MessageBox(NULL,TEXT("Richtiger Server!"),TEXT("D2-Info!"),0); return 0; } } } // <-- hier wird der Destruktor von 'dat_ein' gerufen & das File geschlossen system("del net1.txt"); } return 0; }:xmas2: Werner
-
Achja, schliessen^^.
Danke nochmal, jetzt funktionierts =).
Mfg