thomas0204
Goto Top

Visual cplusplus systembefehle i kann syntaktisch nicht an dieser Stelle nicht verarbeitet werden

Hallo,
ich habe mal wieder ein Problem und zwar wollte ich ein Programm mit eier Oberfläche in Visual Studio 2010 schreiben, welches die aktuelle IP Adresse sowie das Standartgateway und das subnetz in ein label text schreibt nur leider funktioniert das nicht so ganz. Bisher habe ich den Code geschrieben:
				int ip, gate, subnet;
				ip=(system("for /f \"tokens2 delims=:\" %%i in ('ipconfig ^| findstr /i \"IPv4-Adresse\"') do echo %%i"));  
				lip->Text=Convert::ToString(ip);
				subnet=(system("for /f \"tokens2 delims=:\" %%i in ('ipconfig ^| findstr /i \"Subnetzmaske\"') do echo %%i"));  
				lsm->Text=Convert::ToString(subnet);
				gate=(system("for /f \"tokens2 delims=:\" %%i in ('ipconfig ^| findstr /i \"Standardgateway\"') do echo %%i"));  
				lgate->Text=Convert::ToString(gate);

was passiert. Es wid 3 mal die Windwos eingabeaufforderung aufgerufen was irgenwie unpraktisch ist, aber erst mal egal, desweiteren bekomme ich immer den fehler i kann syntaktisch an deiser Stelle nicht verarbeitet werden und ich weiß nicht wieso und ich denke das deswegen im label text auch nur eine 1 geschrieben wird.

LG
THomas

Content-ID: 181055

Url: https://administrator.de/contentid/181055

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

rubberman
rubberman 25.02.2012 um 14:50:08 Uhr
Goto Top
Hallo Thomas0204.

Die Fehlermeldung ist eben nicht dass i syntaktisch nicht verarbeitet werden kann, sondern dass %%i syntaktisch nicht verarbeitet werden kann. Der Grund ist simpel. Die Zeile wird im Kommandozeilenkontext ausgeführt, somit nur ein Prozentzeichen und nicht zwei. Außerdem ist tokens2 natürlich auch nicht richtig, da fehlt das =.

Und nun zu deinen eigentlichen Fehlern.
1. Du benutzt die system() Funktion
2. Du glaubst dass der Rückgabewert diese Funktion irgendetwas damit zu tun hat, was innerhalb der Kommandozeile per echo ausgegeben wird.

Da liegst du meilenweit daneben.

Grüße
rubberman
Thomas0204
Thomas0204 25.02.2012 um 15:27:45 Uhr
Goto Top
erst mal vielen Dank für die schnelle antwort face-smile

ja das habe ich so gedacht aber wie ich sehe funktioniert das nicht. Kannst du mir helfen und mir sagen wie ich die variable %i in eine c++ variable bekomme? oder wie ich das schreiben muss damit ich den wert von echo in c++ weiter benutzen kann?
rubberman
rubberman 25.02.2012 um 15:58:02 Uhr
Goto Top
Hallo Thomas0204.

Vergiss diesen Unsinn ganz schnell. Lerne C++ und beschäftige dich mit Sockets, dann klappt das auch.
Beispiel findest du zB. hier.
Für VS vergiss die dort angegebenen Header und leite so ein, um das Ding erst mal zum Fliegen zu bringen:
#include <iostream>
#include <winsock.h>
#pragma comment(linker, "/defaultlib:wsock32.lib") 
using namespace std;

Wie gesagt, das ist nur ein Beispiel und hilft dir garnichts, wenn du es nicht verstehst.

Grüße
rubberman
Thomas0204
Thomas0204 25.02.2012 um 16:35:29 Uhr
Goto Top
ok vielen dank dann werde ich mich damit mal beschäftigen face-smile
Grüße
Thomas