system();
-
string s; COpen ob; s = ob.get_path("[TASM32Pfad]"); s= s+ "> TASM32 Hello >test.txt"; const char *c = s.c_str(); system(c);der Pfad stimmt überein mit dem Pfad den ich in console tippe und dann funktioniert es(hab beim debuggen nachgeguckt)
wenn ich das ganze über mein programm aufrufen will passiert aber nichts
-
Ähh, was macht das '>' vor dem TASM ?
Sollte das nicht ein '\' sein?
-
niemand schrieb:
Ähh, was macht das '>' vor dem TASM ?
Sollte das nicht ein '\' sein?irgendwas musste ich probieren
so funktionierts
H:\dev\TASM> TASM32 Hello >test.txtdas sag der debugger
+ c 0x00b16678 "H:\dev\TASM> TASM32 Hello >test.txt" const char *system(c);
ist doch identisch oder ?
-
Du bist in der Konsole und siehst:
H:\dev\TASM> TASM32 Hello >test.txt
????
Oder hast Du das so eingegeben (inklusive dem H:\dev\TASM>)?`
Wie auch immer, Dein String sollte im Debugger so aussehen:
H:\dev\TASM\TASM32 Hello >test.txtUnd falls Du irgendwelche Backslash-Zeichen mit der Hand in den String schreiben willst, dran denken sie zu verdoppeln:
const char* s = "H:\\dev\\TASM\\TASM32 Hello >test.txt";
-
Wird evtl. deine "Hello" nicht gefunden? Vielleicht ein Problem des current directorys?
-
niemand schrieb:
Du bist in der Konsole und siehst:
H:\dev\TASM> TASM32 Hello >test.txt
????
Oder hast Du das so eingegeben (inklusive dem H:\dev\TASM>)?`
Wie auch immer, Dein String sollte im Debugger so aussehen:
H:\dev\TASM\TASM32 Hello >test.txtUnd falls Du irgendwelche Backslash-Zeichen mit der Hand in den String schreiben willst, dran denken sie zu verdoppeln:
const char* s = "H:\\dev\\TASM\\TASM32 Hello >test.txt";wenn ich von console rede, meine ich die Eingabeaufforderung von windows, dort habe ich mit cd mich ins TASM verzeichnis bewegt und TASM32 mit der du kompielrenden datei Hello gestartet und wollte das ergebnis als log in test.exe haben
und das mein string so H:\dev\TASM\TASM32 Hello >test.txt aussehen muss ist mir klar, ich hab nur das zeug ausm debugger mitkopiert und die doppel Backslash-Zeichen sind schon zu einem umgewandelt
-
Das > dient nur zur Abgrenzung, lass das weg.
-
funktioniert
system("C:\\Programme\\QuickTime\\QuickTimePlayer");funktioniert nicht, aber warum???
system("C:\\TASM32 Hello >test.txt");
-
in welchem Verzeichnis führst du das Programm aus? in welchem Verzeichnis liegt dein "Hello"? (Bzw. was soll das "Hello" als Argument bewirken?)
Gibts irgendwelche Fehlermeldungen? Wird die Datei test.txt garnicht erst erstellt oder ist sie einfach leer?
-
pumuckl schrieb:
in welchem Verzeichnis führst du das Programm aus? in welchem Verzeichnis liegt dein "Hello"? (Bzw. was soll das "Hello" als Argument bewirken?)
Gibts irgendwelche Fehlermeldungen? Wird die Datei test.txt garnicht erst erstellt oder ist sie einfach leer?Hello ist ein asm file und als arg für den turbo assembler gedacht
Hello liegt im gleichen verzeichnis wie der TASM32 wird aber von meinem programm ausgeführt, welches wo anders liegt
test.txt wird nicht erstellt
-
Dann mach es so:
#include <windows.h> ShellExecute( 0, "open", "C:\\TASM32", "Hello > test.txt", 0, SW_SHOWNORMAL );
-
Wobei das Umleiten in test.txt so wohl nicht klappt, dazu muss man wohl in der cmd sein.
-
User--- schrieb:
Wobei das Umleiten in test.txt so wohl nicht klappt, dazu muss man wohl in der cmd sein.
das wäre aber ein wichtiger Bestandteil
-
es scheint echt daran zu liegen, dass mein ordner c++projekte heißt, die ++ scheinen zu stören
-
steff3 schrieb:
es scheint echt daran zu liegen, dass mein ordner c++projekte heißt, die ++ scheinen zu stören
Kann ich mich nicht vorstellen. Gib doch mal überall absolute Pfade an: Zum Programm, zur Eingabedatei und zur umgeleiteten Ausgabe.
-
steff3 schrieb:
Hello ist ein asm file und als arg für den turbo assembler gedacht
Hello liegt im gleichen verzeichnis wie der TASM32 wird aber von meinem programm ausgeführt, welches wo anders liegt
Wenn du den TASM32 aus einem anderen Verzeichnis heraus ausführst (nämlich dem Ausführungsverzeichnis deines Programms), dann interpretiert er alle weiteren Pfadangaben als relativ zu dem Ausführungsverzeichnis.
Beispiel: Dein Ausführungsverzeichnis sei C:\Foo\Bar\Program\Dann wird der Aufruf
H:\dev\TASM\TASM32 Hello >test.txtfolgendes bewirken:
- Du übergibst dem TASM32 als Argument die Datei C:\Foo\Bar\Program\Hello
- Du leitest die Ausgabe um nach C:\Foo\Bar\Program\test.txtNun bin ich nicht ganz sicher, was Windoof bei dir als Ausführungsverzeichnis setzt. Könnte sein, dass es das Verzeichnis ist, von wo aus du dein Programm startest. Könnte sein, dass es das Verzeichnis ist, wo dein Prog liegt. Oder du hast in den eigenschaften des Prog ein anderes Verzeichnis als Ausführungsverzeichnis stehen...
Mach mal folgendes: Kopiere dein Prog in das Verzeichnis wo der TASM liegt und führe es dort aus, am besten nachdem du sichergestellt hast, dass in den Eigenschaften der .exe kein Ausführungsverzeichnis angegeben ist.Was auch eine Möglichkeit wäre (bin aber nicht sicher): erweitere deinen system-Befehl um ein weiteres Argument:
system("cd H:\\dev\\TASM\\; TASM32 Hello >test.txt");Das sollte nach meinem Verständnis innerhalb der vom system-befehl erstellten Shell erst in das fragliche Verzeichnis wechseln und dort den ganzen Schmu bezüglich dieses Verzeichnisses ausführen.
-
ich kenn den TASM32 nicht, aber
c:\programme\TASM32 > test.txtschreibt meiner meinung nach die consolen-ausgabe vom TASM32 in die datei test.txt
kannst du ausprobieren, indem du in die konsole gehst, z.b. direkt zu c:, und schreibst:
dir > test.txt
dann hast du in der test.txt die auflistung des ordnerinhaltes (edit test.txt als beweis)test.txt als argument ist ohne ">"
es müsste also, meiner meinung nach, so aussehen:
system("H:\\dev\\TASM\\TASM32 H:\\dev\\TASM\\Hello >test.txt");damit tust du die datei hello im selben verzeichnis, wie der TASM32 ist, als argument übergeben. in die txt (die am gleichen ort erstellt wird, wo dein programm lag) werden nur meldungen vom TASM geschrieben, z.b. kompilierungsfehler (nehm ich mal an, ich kenn TASM, wie gesagt, nicht)
-
bin wohl etwas verwirrt heut..
hab die 2. seite übersehn.. aber gleichzeitig noch was im post von pumuckl geguckt (der eigentlich das, was ich gesagt hab, auch schon geschrieben hat)
peinlich