schleife funktioniert nicht ; (



  • for (int ilauf=0;buf[ilauf];ilauf++)
    	{
    	if (!(wxStringEq(telegramm, "[nameserver=")) && !(wxStringEq(telegramm, "[ip")))
    		{
    		telegramm=telegramm+buf[ilauf];
    		}
    	else
    		{
    			if (wxStringEq(telegramm, "[nameserver="))
    			{
    				if(buf[ilauf]!=']')
    				{
    					if(buf[ilauf]!='|')
    						{
    						eingabe=eingabe+buf[ilauf];
    						}
    					else
    						{
    						edtNameserver->WriteText(eingabe);
    						edtNameserver->WriteText("\n"); // Den ersten nameserve trägt er ein , den zweiten nicht mehr : (
    						eingabe=" ";
    
    						}	
    				}
    				else
    				{
    				telegramm=" ";				
    				}
    			}
    		}
    
    	}
    }
    

    Die schleife dunktioniert nicht sauber, weiss jemmand warum?

    So sieht der String aus.

    [nameserver=62.72.64.237|62.72.64.241][ip=212.204.23.69]

    Nachdem die erste ip eingetragen wurde und buf[ilauf] bei "|" angekommen ist wird ilauf nicht mehr hochgezählt, was eigentlich nicht sein kann : /

    /edit
    Beitrag steht offenbar im falschen Foren bereich, der beitrag hätte besser in "Rund um die Programmierung" hinein gepasst. Wenn möglich verschieben.

    /edit2
    Ich nutze wxWidgets und MinGW Studio



  • int ilauf=0;buf[ilauf];ilauf++

    das vlt. mal überarbeiten. tip. die schleife braucht im 2. teil eine bedingung, bei dir steht nur ein array...

    kOOni



  • e86_aus_schule schrieb:

    int ilauf=0;buf[ilauf];ilauf++

    das vlt. mal überarbeiten. tip. die schleife braucht im 2. teil eine bedingung, bei dir steht nur ein array...

    kOOni

    Aber die bedinung "buf[ilauf]" ist doch gleich " bug[ilauf]!="" "

    Oder nicht?Würde der Compiler nicht auch Fehler ausgeben wenn er dies nicht als Bedinung sieht?

    das problem ist ja nicht das die schleife garnicht funktioniert oder gar unendlich oft läuft sondern sie ilauf nicht mehr hoch zählt wenn sie bei "|" angelangt ist. : (



  • moin meister ....

    werf mal den Debugger an und prüfe welchen Wert iLauf nach verlassen der Schleife hat. Dann zeigts Du uns mal die Initalisierung von buf vor der Schleife

    telegramm ist offenbar "[nameserver=62.72.64.237|62.72.64.241][ip=212.204.23.69]"

    ich sehe gerade der Haken ist hier wohl

    if(buf[ilauf]!=']') // die 2. IP wird mit ] abgeschlossen, daraufhin wird telegramm auf " " gesetzt, wimit beim nächsten Durchlauf alle Bedingungen mit
    wxStringEq nicht mehr zutreffen und die Schleife rödelt bis buf[iLauf] ==0 ist
    es wird aber nichts weiter gemacht ...

    MfG
    RB

    PS: dafür gibts aber nen Debugger ... 😃



  • *kopf tisch*

    hmm ; D Ja klar!! du hast recht.

    Aber das mit dem Debugger kann ich erst später machen wenn ich wieder zu Hause bin...

    telegramm ist offenbar "[nameserver=62.72.64.237|62.72.64.241][ip=212.204.23.69]"

    das stimmt nicht ganz...

    void MainFrame::OnTimer(wxCommandEvent &event)
    {
    wxSocketClient *sock = new wxSocketClient(wxSocketFlags(wxSOCKET_NONE));
    wxIPV4address addr ;
    addr.Hostname("192.168.0.1") ;
    addr.Service("2360");
    sock->Connect(addr, FALSE);
    wxChar buf[1024];
    sock->Read(buf,1024);
    sock->Close();
    edtNameserver->Clear();
    wxString telegramm, eingabe;
    wxLogMessage(wxString(buf));
    for (int ilauf=0;buf[ilauf];ilauf++)
    	{
    	if (!(wxStringEq(telegramm, "[nameserver=")) && !(wxStringEq(telegramm, "[ip")))
    		{
    		telegramm=telegramm+buf[ilauf];
    
    		}
    	else
    		{
    			if (wxStringEq(telegramm, "[nameserver="))
    			{
    				if(buf[ilauf]!=']')
    				{
    					if(buf[ilauf]!='|')
    						{
    						eingabe=eingabe+buf[ilauf];
    						}
    					else
    						{
    						edtNameserver->WriteText(eingabe);
    						edtNameserver->WriteText("\n");
    						eingabe=" ";
    						wxLogMessage(wxString(buf[ilauf]));
    						}	
    				}
    				else
    				{
    				telegramm=" ";				
    				}
    			}
    		}
    
    	}
    }
    

    /edit

    Nun funktioniert alles!! THX!


Anmelden zum Antworten