Hallo!
Ich hätte da mal wieder eine Frage zu C++:
Ich möchte ein Programm schreiben, in dem man einen Server im LAN durch den Befehl Ping
ansprechen kann. Allerdings soll die IPAdresse frei wählbar sein und ein Edit-Feld soll zur Eingabe dieser dienen. Ich sag jetzt einfach mal, wie ich mir das bis jetzt so gedacht habe, aber es funktioniert einfach nicht. Also mal den Text, den ich bis jetzt habe:
system("ping (Edit1->Text));
Ich hab so das Gefühl, dass er den Server (Edit1->Text) ansprechen will, aber das sieht man ja nicht.
Kann mir jemand sagen, wie man das macht??Vielleicht in Float umwandeln??Ich kriegs einfach nicht hin.
MfG
Michi
system(„ping (Edit1->Text)“);
Was Du hiermit erreichst, ist das gleiche, als wenn Du am DOS-Prompt die folgende Zeile eingeben würdest:
ping (Edit1->Text)
Er pingt also wirklich (Edit1->Text) an, was natürlich nicht gewünscht ist. Du mußt irgendwie den Text aus Edit1->Text in den String bekommen, den Du system() übergibst. Das geht z. B. so:
char \*lpOutput = NULL;
lpOutput = new char[6+strlen(Edit1-\>Text)];
if (lpOutput)
{
strcpy(lpOutput,"ping ");
strcat(lpOutput,Edit1-\>Text);
system(lpOutput);
delete[] lpOutput;
}
Du alloziierst zuerst einen Puffer von chars, der Platz für die Zeichen "ping ", die aus dem Edit-Control und die abschließende Null enthält.
Wenn dies erfolgreich war (lpOutput!=NULL), dann füllst Du den Puffer zuerst mit "ping " (strcpy), dann fügst Du die IP-Adresse an (strcat). Diesen zusammengefügten String übergibst Du system. Als letztes gibst Du den Puffer wieder frei (delete[]).
HTH,
–Mathias Ricken