Kommandozeilenparameter
-
Leonhard12 schrieb:
Ich ruf mein Programm mittels F5 auf, also debugge es.
Aber das ist anscheinend falsch.Ja, das IST falsch

Du musst es selber von der Console starten in dieser Art:hostprogramm host-ipEben so, wie es deine "Programm-Hilfe" angibt.
"F5 drücken" hört sich nach IDE an. Schau mal ob du deine Build-Targets konfigurieren kannst. Da kann man dann oft Commandline-ARgs angeben. Dann kannst du weiterhin mit "F5" arbeiten.
Alternativ das Debuggen abfangen (#ifdef NDEBUG oder so), und dich dort mit argc==1 zufrieden geben, dafür einen hartcodierten Hostnamen hernehmen.
Aber eben genau fürs debugge ist es wichtig, das Programm in seiner natürlichen verwendung zu testen, und dazu gehört in deinem Fall auch mal verschiedene Hostnamen durchzutesten.
-
Leonhard12 schrieb:
Ich ruf mein Programm mittels F5 auf, also debugge es.
Aber das ist anscheinend falsch.Hmmm... F5 zum Debuggen drücken, das klingt mir nach Visual Studio. Sollte ich richtig liegen, dann geh mal unter:
Projekt -> <Projektname>-Eigenschaften (alternativ einfach ALT + F7 drücken)
auf:
Konfigurationseigenschaften -> Debugging
Dort kannst du dann bei Befehlsargumente die Argumente reinschreiben, die dem Programm beim Debuggen im Visual Studio übergeben werden sollen. Ansonsten wie du außerhalb deiner IDE das Programm mit Argumenten aufrufen kannst wurde ja bereits gesagt
-
Huhu,
ja du lagst richtig x)
Jedoch, weiß ich nicht was ich bei den Befehlsargumenten eingeben muss:Hab´s mit:
- host-ip
- -ip
- Testprogramm host-ip
Mehr fällt mir grad nicht ein

Danke nochmal für eure Hilfe!Lg Leo
-
host = gethostbyname(argv[1]);
mal mit dem NAMEN versucht? (z.bsp. localhost)Falls ja: was passiert denn dann?
bb
-
Verstanden... danke!
-
Hey
ich hoffe das ich nicht gepeinigt werde weil ich das thema wieder raufhole.
Ich habe aber kein plan wie ich es anstelle die .exe mit parametern zu starten ohne der IDE unter Windows.
Danke im voraus!
-
Kommandozeile oder ne Verknüpfung erstellen, dann rechtsklick darauf und im Eigenschaften-Reiter an Ziel ranschreiben.
Oder du schreibst dir noch nen kleines Programm:
#include <cstdio> #include <iostream> #include <string> const char* dateiname = "C:/programm.exe"; //natürlich anpassen^^ int main() { std::string command(dateiname); std::cout << "anzahl an parametern?" << std::endl; std::size_t count; for(std::cin >> count; count > 0; --count) { std::string para; std::getline(std::cin, para); command += " -\"" + para + "\""; } fopen(command.c_str(), "r"); }was du dann einfach ausführst
bb
ich kenn leider keinen wirklichen C++ Weg, der dir ne Datei startet, deshalb musste ich fopen nehmen...
-
ich kenn leider keinen wirklichen C++ Weg, der dir ne Datei startet, deshalb musste ich fopen nehmen...

-
danke unskilled!
Mir ist eine Methode dann eingefallen, die aber nicht so schön ist wie deine^^
system("...");werde deine bevorzugen!
-
wtf schrieb:
ich kenn leider keinen wirklichen C++ Weg, der dir ne Datei startet, deshalb musste ich fopen nehmen...

ist ja wohl offensichtlich ne C-Fkt...
wobei ich mir gerad nicht mal sicher bin, ob sie wirklich im globalen namespace liegt...
hab auch kein plan, wie das hier gerad mit fclose ist - ob man es braucht oder nicht und ob fopen nicht vll nur NULL zurückgibt und sich die frage damit geklärt hätte^^bb
-
seit wann kann man mit fopen programme starten?
-
hmmm,
es hat nicht geklappt.
Ich gib die Anzahl der Parameter ein und dann den Parameter selbst drücke ENTER und dann schließt sich die Konsole.hmmm
-
loll schrieb:
seit wann kann man mit fopen programme starten?
oh - mir war aber so^^ hätt ichs nur mal getestet ><
edit:
Ich habs aber nicht hinbekommen, dass das Programm geöffnet wird und offen bleibt
#include <cstdlib> #include <iostream> #include <string> const char* dateiname = "C:/Windows/System32/PING.EXE"; //geht nicht //CALC.EXE geht aber... #include <windows.h> #pragma comment(lib, "shell32.lib") int main() { std::string command; std::cout << "anzahl an parametern?" << std::endl; std::size_t count; std::cin >> count; std::cin.ignore( std::cin.rdbuf()->in_avail() ); for(; count > 0; --count) { std::string para; std::getline(std::cin, para); command += " -\"" + para + "\""; } ShellExecute(NULL, NULL, dateiname, command.c_str(), NULL, SW_SHOWNORMAL); }auch mit
GetShellWindow()als ersten parameter blieb der erfolg aus ><
GetDesktopWindowgeht auch nicht
vll hat ja jmd anderes ne idee^^bb
PS: Wenn das Programm ne GUI hat, geht alles super - sonst gehts nicht ><