printf Problem
-
Hallo
ICh habe ein Problem, ich habe den cmd aufgerufen, mit dieser Zeile:
wxExecute(_T("C:\\WINNT\\system32\\cmd.exe"), wxEXEC_SYNC);dies funktioniert einwandfrei.
Jetzt müsste ich im cmd noch einige Zeilen schreiben, ich habe nur mit dem String versucht, ich habe mit printf(string), sprintf mir printf("%s",string), printf("string"), etc versucht.
aber niergends klappt es.
kann mir ejmand helfen? weiss ist vielleicht nicht gerade euer standard.
-
Bitte mehr Code - was hast du versucht? und was meinte dein Compiler zu diesen Versuchen?
-
wenn c++ dann eher cout
std::string str("TestString"); std::cout << str.c_str() << std::endl;amsonsten probiere mal so
printf("%s", string.c_str())bin mir da aber nicht sicher, hab seit jahren kein printf mehr verwendet #gg
-
sprintf("%s",string);
sprintf(string);
sprintf("string");
printf(string);
printf("string");DIese Varianten in etwa habe ich versucht, mein Compiler meinte zum Teil nichts, dann passierte aber nichts (im Sting ist am schluss ein \n) oder er meinte:
"SimulationsInterface.cpp:525: error: cannot convert `wxString' to `const char*' for argument `2' to `int sprintf(char*, const char*, ...)'"Oder wie würdet ihr im cmd eine Zeile schreiben?
-
Der erste Parameter von sprintf() ist der Zielstring, in den du schreiben willst, der zweite enthält die Formatangaben, alle weiteren die Daten. Und für einen wxString (wie ist der Typ definiert?) benötigst du vermutlich eine explizite Umwandlung nach const char*.
-
So jedenfalls nicht. printf und cout geben auf dem Bildschirm aus, nicht auf die Standardeingabe von <zufällig ausgewählter Prozess> (woher soll printf eigentlich wissen, dass Du gerade diese cmd.exe meinst?)
Das wird etwas komplizierter, in wxWidgets kannst Du wxExecute ein Objekt vom Tpy wxProcess übergeben, welches Dir dann ein Output-Handle liefern kann um an den Prozess zu schreiben.
EDIT: Ich habe doch "in cmd eine Zeile schreiben" wohl richtig interpretiert, oder?
-
hmm, also folgendes ist zu tun:
den cmd habe ich aufgerufen, in diesem will ich ein .dir File in ein .raw File umwandeln. Dies funktioniert (den nötigen "code" habe ich nur mit dem cmd getestet), einfach kann ich nicht vom Programm aus in den cmd schreiben.
Ich habe mit wxExecute den cmd geöffnet, mit dem wxProcess kam ich auf keine Lösung.
Kann ich nicht mit einem Befehl oder so gerade auf das geöffnete Fenster schreiben? Ich verwende WXEXEC_SYNC, heisst alles wird angehalten bis es beendet ist.Danke, ihn seit super. Habt ihr noch weitere Ideen?
-
Definiert ist "Sring" als wxString, hast recht.
wie wird von wxStrring auf const char umgewandelt?
-
Otto_normal_coder schrieb:
Definiert ist "Sring" als wxString, hast recht.
Und wie ist 'wxString' definiert?
PS: Eventuell solltest du warten, bis dich jemand ins richtige Board ("andere GUIs") verschiebt.
-
Mit welchem Befehl willst du denn die Dateien (.dir -> .raw) umwandeln?
Wenn das ein Konsolen-Befehl ist, dann braucht du nicht erst die CMD.exe aufrufen, sondern kannst einfach den Befehl mit system() bzw. wxExecute absetzen, auch mit Parametern z.b.char cBuffer[200]; sprintf(cBuffer, "dir2raw %s %s", cDirFile, cRawFile); system(cBuffer);wobei cDirFile und cRawfile einfach Parameter (char
wären und "dir2raw" der entsprechende Konsolenbefehl.