[C/C++] C++ Variable im Systembefehl

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Neo23, 6. Januar 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 6. Januar 2009
    C++ Variable im Systembefehl

    Ich hab das Problem das ich eine Variable in einem Systembefehl benutzen will, was aber nicht so ganz klappt.

    Code:
    #include <string.h>
    #pragma resource "*.dfm"
    #include <sstream>
    TForm1 *Form1;
    String Name,PW;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
     : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Name = Edit1->Text;
    PW = Edit2->Text;
    system ("net user Name PW /add");
    system ("net localgroup administratoren Name /add");
    So sied der Code bis jetz aus.
    Was muss ich ändern?

    Ich hof ihr könnt mir mal wiede helfen.
    MfG Neo
     
  2. 7. Januar 2009
    AW: C++ Variable im Systembefehl

    Du musst - bevor du den Batch-Befehl ausführst - den Namen und das Passwort in diesen String einfügen.

    Dafür schnappst du dir einfach einen neuen String und fügst über sprintf die Variablen (Name und PW) ein. Danach kannst du dann den Batch-Befehl mit den korrekten Daten ausführen.

    Hier mal ein Beispiel für sprintf:
    Code:
    /* sprintf example */
    #include <stdio.h>
    
    int main ()
    {
     char buffer [50];
     int n, a=5, b=3;
     n=sprintf (buffer, "%d plus %d is %d", a, b, a+b);
     printf ("[%s] is a %d char long string\n",buffer,n);
     return 0;
    

    Dein Code könnte dann folgendermaßen aussehen (ungetestet, nicht sehr schön):
    Code:
    char buffer [100];
    Name = Edit1->Text;
    PW = Edit2->Text;
    
    sprintf(buffer, "net user %s %s /add", Name, PW);
    system (buffer);
    
    sprintf(buffer, "net localgroup administratoren %s /add", Name);
    system (buffer);
    
     
  3. 7. Januar 2009
    AW: C++ Variable im Systembefehl

    Oder du baust dir ne eigene kleine Funktion mit Formationsangabe, ala
    systemf("echo %s", "Bla");

    Aussehen könnte das wie folgt:
    Code:
    #include <stdio.h>
    #include <stdarg.h>
    
    int systemf( const char* format, ... )
    {
     char buffer[MAX_PATH+1] = {0};
     va_list argList;
    
     va_start( argList, format );
     vsnprintf( buffer, MAX_PATH, format, argList );
     va_end( argList );
    
     return system( buffer );
    }
     
  4. 11. Januar 2009
    AW: C++ Variable im Systembefehl

    genau. als ergänzung: das problem ist (ich gehe davon aus das du mit Borland arbeitest), dass Borland für Strings seinen eigenen Datentyp verwendet (also auch fuer den Text in einem Edit-Feld). Dieser heißt (glaub ich) 'AnsiString'. Die Funktion system ist aber aus der Standard Library von C++ und diese kennt den Datentyp von Borland nicht. Du musst den' AnsiString' aus dem Edit-Feld also erst in einen einen 'string' aus der Standard Library "packen". Wie das funktioniert haben dir meine Vorgänger ja gezeigt
     
  5. 10. Februar 2009
    AW: C++ Variable im Systembefehl

    Vielen Dank,
    es klapt jetzt.

    Mfg Neo
     
  6. 10. Februar 2009
    AW: C++ Variable im Systembefehl

    [x] erledigt -> closed
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.