Variable in einem Befehl?



  • Hallo,

    ich bin noch nicht lange bei der Sache..Wir nehmen gerade in der Berufsschule C++ durch (if, else, do, while usw.)

    Ich bin auf die Idee gekommen ein Net Send Code zu basteln...

    Das hier ist dabei rausgekommen:

    #include<iostream.h>
    #include<conio.h>
    #include<dos.h>
    main()
    {
          int i;
          do
          {
          system ("net send IP TEXT");
          i++;
          }
          while (i!=1);
          getch();
          }
    

    Das Skript funktioniert ja schonmal, nun möchte ich es aber gerne so umschreiben, dass der Benutzer am Anfang die IP und Text selbst eingeben kann...Das wäre ja an sich einfach (variable "ip" und "text" einbinden), aber WIE ZUM TEUFEL??? bekomme ich jetzt das <<ip<< und das <<text<< in diese Zeile rein:

    system ("net send IP TEXT");
    

    Geht das überhaupt? Das steht ja in " ????
    Freue mich über jede Antwort!

    Martin



  • Sorry für Doppelpost...
    Ich hoffe ihr versteht was ich meine. So ungefähr soll das aussehen:

    #include<iostream.h>
    #include<conio.h>
    #include<dos.h>
    main()
    {
          [b]char[/b] ip,text;
          [b]int[/b] i;
          cout<<"Bitte geben Sie eine IP oder einen PC-Name ein: ";
          cin>>ip;
          cout<<"Bitte geben Sie den gewünschten Text ein:\n";
          cin>>text;
          [b]do[/b]
          {
          [b][u]system ("net send"<<ip<<" "<<text);[/u][/b]
          i++;
          }
          [b]while[/b] (i!=50);
          getch();
          }
    

    Der unterstrichene Text ist das Problem...Wie bekomm ich die variablen ip und text da in die Befehlszeile dass sie in den Befehl übernommen werden?



  • Hallo,

    mit einem std::ostringstream:

    #include <sstream>
    
    int i=7;
    std::ostringstream ostr;
    ostr<<"Wert: "<<i;
    
    std::cout<<ostr.str()<<std:.endl;
    

    MfG

    GPC



  • Öhm ja...genau 😃

    Kannst du mir das Ding mal in den Code einbauen, den ich oben gepostet habe? Dann find ich vielleicht heraus wie das funnktioniert...

    Vielen Dank schonmal für die Antwort!

    Martin



  • PS: Wir benutzen "Bloodshed Dev C++"

    Hilft dir das weiter?



  • So, vereinfachen wir das ganze mal:

    #include<iostream.h>
    #include<conio.h>
    #include<dos.h>
    main()
    {
          system ("net send IP TEXT");
          getch();
          }
    

    Jetzt will ich 2 cin>> einbauen, bei denen IP und TEXT eingegeben wird...<<IP<< und <<TEXT<< müssen nur noch in diese Zeile eingebaut werden:

    [cpp] system ("net send IP TEXT");

    Gruß Martin



  • Hallo

    #include <iostream> // ohne h
    #include <string>
    #include <conio.h>
    #include <dos.h>
    main()
    {
          std::string ip,text; 
          int i;
          cout<<"Bitte geben Sie eine IP oder einen PC-Name ein: ";
          cin>>ip;
          cout<<"Bitte geben Sie den gewünschten Text ein:\n";
          cin>>text;
          std::string command = "net send " + ip + " " + text;
          do
          {
            system (command.c_str());
            i++;
          }
          while (i!=50);
          getch();
          }
    

    bis bald
    akari



  • Sooo, ich hab mich mal hier im Forum registriert 😉
    Erstmal sorry für die vielen Doppelposts 🙂

    Ich habe den Code schonmal editiert, dass nur noch die Variable eingesetzt werden muss.

    #include<iostream.h>
    #include<conio.h>
    #include<dos.h>
    main()
    {
          char IP,Text;
          cout<<"Net Send Chat v.0.1 Beta\n\n";
          cout<<"Bitte geben Sie Ihren Text ein: ";
          cin>>Text;
          cout<<"Bitte geben Sie die IP an: ";
          cin>>IP;
          system ("net send <<IP<<" "<<Text");
          getch();
          }
    

    Dann gibt es noch ein anderes Problem...Wie schaffe ich es, dass man bei der Texteingabe mehr als 1 Buchstabe eingeben kann?



  • DANKE! Das funktioniert einwandfrei!

    Nur noch 2 Fragen:

    1. Wie schaffe ich es, dass die Nachricht nur 1 mal an den User geschickt wird?
    2. Welchen Befehl gibt es, dass das Skript nach einer Abfrage wieder zum Anfang springt? (z.B. "Möchtest du erneut eine Nachricht schreiben? Ja/Nein"

    Gruß Martin



  • Guck dir mal den Quellcode von akari an. Der macht genau das was du möchtest.
    Eventuell wäre es noch interessant statt mit cout mit getline einzulesen um auch Leerzeichen mit einzulesen:

    string text;
    getline(cin, text);
    
    1. Die Schleife um den Aufruf der system-Funktion rausnehmen.
    2. Eine Schleife um das Programm bauen die abfragt ob man weitermachen will oder nicht. Dazu gibt es schon einiges im Forum.
      Am Besten du siehst dir mal in einem Tutorial das Thema Schleifen an.


  • M4rt!n schrieb:

    1. Wie schaffe ich es, dass die Nachricht nur 1 mal an den User geschickt wird?

    Indem du die do-Schleife wegläßt?

    M4rt!n schrieb:

    2. Welchen Befehl gibt es, dass das Skript nach einer Abfrage wieder zum Anfang springt? (z.B. "Möchtest du erneut eine Nachricht schreiben? Ja/Nein"

    Indem du Eingabe mit in die Schleife nimmst mit einer entsprechenden Abfrage.

    bis bald
    akari



  • Ich versteh nicht ganz was du meinst ?? Sorry, fange gerade erst an mit C...

    Wegen dem Script Neustart...Ich habe das schonmal editiert so wie ich mir die Abfrage vorstelle, da fehlt jetzt nur noch der Befehl dass der wieder zum Anfang von Skript springt (wisst ihr die?):

    #include <iostream.h> // ohne h
    #include <string.h>
    #include <conio.h>
    #include <dos.h>
    main()
    {
          std::string ip,text;
          int i;
          char neustart;
          cout<<"Bitte geben Sie eine IP oder einen PC-Name ein: ";
          cin>>ip;
          cout<<"Bitte geben Sie den gewünschten Text ein:\n";
          cin>>text;
          std::string command = "net send " + ip + " " + text;
          do
          {
            system (command.c_str());
            i++;
          }
          while (i!=1);
          cout<<"Möchtest du noch eine Nachricht schreiben? [J/N] ";
          cin>>neustart;
          if (neustart=='J') .......................
          getch();
          }
    


  • Hallo

    #include <iostream> // ohne .h !
    #include <string> // ohne .h
    #include <conio.h>
    #include <dos.h>
    main()
    {
          std::string ip,text;
          char neustart;
          std::string command;
          do
          {
            cout<<"Bitte geben Sie eine IP oder einen PC-Name ein: ";
            cin>>ip;
            cout<<"Bitte geben Sie den gewünschten Text ein:\n";
            getline(cin, text);
            command = "net send " + ip + " " + text;
              system (command.c_str());
            cout<<"Möchtest du noch eine Nachricht schreiben? [J/N] ";
            cin>>neustart;
            } 
            while (neustart != 'J');
          getch();
          }
    

    bis bald
    akari



  • Vellas schrieb:

    Am Besten du siehst dir mal in einem Tutorial das Thema Schleifen an.

    Dann solltest du dir diesen Ratschlag von mir, den ich eben gepostet hatte zu Herzen nehmen und hier gucken:
    http://tutorial.schornboeck.net/schleifen.htm

    Am Besten machst du die Schleife um das ganze Programm rum.



  • Also, das mit dem einmal schreiben hab ich schonmal hinbekommen...

    Jetzt brauch ich nur noch den Befehl zum zürückspringen...Wie könnte ich das einbinden? Wie könnte die do-while Schleife Aussehen?

    main()
    {
          std::string ip,text;
          char neustart;
          cout<<"Bitte geben Sie eine IP oder einen PC-Name ein: ";
          cin>>ip;
          cout<<"Bitte geben Sie den gewünschten Text ein:\n\n";
          cin>>text;
          std::string command = "net send " + ip + " " + text;
          system (command.c_str());
          getch();
          }
    

    PS: Es gibt doch noch ein Problem, und zwar werden nicht alle Wörter die man schreibt ausgegeben, sondern nur das erste...Woran liegt das?

    Martin



  • Vellas schrieb:

    Vellas schrieb:

    Am Besten du siehst dir mal in einem Tutorial das Thema Schleifen an.

    Dann solltest du dir diesen Ratschlag von mir, den ich eben gepostet hatte zu Herzen nehmen und hier gucken:
    http://tutorial.schornboeck.net/schleifen.htm

    Am Besten machst du die Schleife um das ganze Programm rum.

    Sorry, nicht direkt gesehen...Danke!

    PS: Anscheinend bei Bloodshed Dev <iostream> doch mit .h, weil wenn ich es weglasse funktioniert es nicht...



  • @Akari: Das funktioniert irgendwie nicht 😞

    Wenn man die IP eingegeben hat kommt eine Fehlermeldung:

    "Das Senden von Dateien wird nicht länger unterstützt ..."

    Außerdem wird das Skript nicht neugestartet, wenn man J eingibt 😕



  • M4rt!n schrieb:

    PS: Anscheinend bei Bloodshed Dev <iostream> doch mit .h, weil wenn ich es weglasse funktioniert es nicht...

    Haste

    using namespace std;
    

    drin? Wenn nicht, sollte es damit gehen. Habe mit der IDE (Version 5) auch schon paar mal programmiert ohne Probleme.



  • Ich hab das ganze jetzt so gemacht:

    #include <iostream.h> // ohne h
    #include <string.h>
    #include <conio.h>
    #include <dos.h>
    main()
    {
          std::string ip,text;
          using namespace std;
          char neustart;
          do
          {
               cout<<"Bitte geben Sie eine IP oder einen PC-Name ein: ";
               cin>>ip;
               cout<<"Bitte geben Sie den gewünschten Text ein:\n\n";
               cin>>text;
               std::string command = "net send " + ip + " " + text;
               system (command.c_str());
               cout<<"Möchtest du erneut einen Text eingeben [J/N]? ";
               cin>>neustart;}
          while (neustart=='N');
          getch();
          }
    

    Hab das "using namespace std;" oben eingebunden, es kommt aber trotzdem immer nur 1 Wort an...Kennt C++ keine Leerzeichen?

    Und die Schleife funktioniert auch nicht so wie ich mir das denkt...Es kommt zwar die Abrage, aber egal was ich drück...das Skipt fängt nicht neu von oben an...

    edit: Korrigiere! Der Neustart funktioniert jetzt doch! War bloß ein Logik-Fehler von mir. Hatte N statt J drin stehen...

    Bleibt nur noch das Problem übrig, dass nur 1 Wort ankommt...



  • Hallo

    irgendwie scheinst du die Veränderungen, die ich meinem letzten Post geschrieben habe zu ignorieren...

    bis bald
    akari


Anmelden zum Antworten