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



  • @FireFlow

    das tut dochden Battle.Net Servern nichts,spielts sich ja alles Lokal ab.

    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


Anmelden zum Antworten