Problem mit cmd in C++
-
Nabend!
Ich wollte in C++ eine kleine Java Interpreter bauen...
Bin noch nicht allzu lange dabei,deswegen benötige ich etwass Hilfe.Im Programm soll der Benutzer 2 Pfade angegeben,einmal die des Java Compilers (javac)
und zum anderen die java.exe selbst.ziel ist es, zunächst eine CLASS Datei zu erzeugen,diese anschließend bei geöffnetem Kommandozeileninterpreter auszugeben. Ich hoffe ich habe mich nciht allzu kompliziert ausgedrückt

Würde mich sehr über eure Hilfe freuen...
MFG
ZeroX
-
Und was möchtest du da jetzt genau von uns wissen?
-
Oh,sry..^^
Mein Problem ist,dass ich nicht hinbekomme,dass er die Class Datei erzeugt und ausführt...
Der Benutzer soll ja auch angeben, wie die auszuführende Datei heißt z.B "HalloWelt" ebenfalls in einem Edit-Feld.
Das BatchProgramm dazu ist ja recht simpel 2 Zeilen Code sinds da nur...wenn man dieses dann aus der CMD heraus ausführt muss man dann ja logischerweise auch den Namen der JavaDatei angeben..Mit diesem code lässt sich das Preigramm starten,aber es wird keine CLASS Datei erzeugt
system("C:\j2sdk1.4.2_05\bin\javac %1.java + Edit1->Text");system("C:\j2sdk1.4.2_05\bin\java %1 + Edit1->Text");
-
'\j' ist keine erlaubte escapesequenz in Strings. Versuche mal die '\'-Zeichen zu verdoppeln, also:
"C:\\j2sdk1.4.2_05\\bin\\javac %1.java + Edit1->Text"
-
Zerox schrieb:
system("C:\j2sdk1.4.2_05\bin\javac %1.java + Edit1->Text");
Das ist Batch-Syntax. Das kannst du natürlich nicht einfach so in ein C++ Prog hacken.
%1 ist im Batch der erste Parameter, der der Batch-Datei übergeben wurde. In C++ bekommst du das über argv von
int main(int argc, char** argv)raus.
-
und dann bin ich mir auch nicht sicher, ob das "Edit1->Text" auch in Anführungsstriche gehört...(wie gesagt, bin mir nicht sicher)
-
Man sollte wohl eher den String, der den kompletten Befehl enthält, außerhalb zusammensetzen und dann erst an system(""); übergeben.
IMHO ist system("") nicht die beste Variante. Windows bietet in der WinAPI extra Funktionen, um Programme auszuführen.