pfade leerzeichen und parameterübergabe
-
hallo danke für die antwort,
also bei mir kompiliert der das ohne weiters durch
hab deins ausprobiert und es kommt folgende felhlermeldungfür diese zeile
parameter << "\"cpu:1modellid:" << id << "steps:1000verzeichnis:" << ziel << "\""; error C2297: '<<': Ungültig, da der rechte Operand vom Typ 'const char [16]' ist
-

Was benutzt du für einen Compiler?!
-
ohmann sorry, hab den header #include <sstream>
nicht drin gehabt.
denn hatte ich sonst überall nur in der klasse nicht.
sorry und vielen dank probiers jetzt mal weiter aus ob das so geht
-
Falls das nicht funktioniert, was drakon vorgeschlagen hat, denn ich sehe persönlich den Unterschied nicht, ausser dass es über einen langsameren
stringstreamgeht, dann hätte ich gerne gewusst, was in der VariableaktuellesVerzeichnisdrin steht.
Ich wette irgendwas was mit "c:\dokumente" anfängt
Grüssli
-
drakon schrieb:
Ein Wunder, dass du das so überhaupt durch den Compiler kriegst..
Wieso eigentlich nicht? Hier werden doch keine Zeiger addiert o.ä. (vorausgesetzt, aktuellesVerzeichnis ist ein std::string)?
-
Ich gehe mal davon aus, dass id kein string ist und daher gibt das nur Unsinn, wenn ein string und z.B ein integer addiert wird..
-
ja also es geht auch mit stringstream nicht
aktuellesverzeichnis sieht folgendermaßen aus
char Buff[512]; GetCurrentDirectory(512,Buff); string aktuellesVerzeichnis=(string)Buff;in dem anderen programm das den parameter aufschlüssen soll mach ich das wie folgt
string parameter=GetCommandLine(); int verzeichnisindex=parameter.find("verzeichnis:"); string verzeichnis=t.substr(d+12,t.size());und mit dem verzeichnis C:\Dokumente und Einstellungen hat er eben probleme.
hatte ja versucht den string zusammenzuhalten mit anführungsstriche.
-
drakon schrieb:
Ich gehe mal davon aus, dass id kein string ist und daher gibt das nur Unsinn, wenn ein string und z.B ein integer addiert wird..
doch alles string
void Dateienverwalter::starteKammermodellGenerator(string verzeichnis,string id,string ziel) { char Buff[512]; GetCurrentDirectory(512,Buff); string aktuellesVerzeichnis=(string)Buff; /*string cpu="\"cpu:"; cpu+="1"; cpu+="modellid:"; cpu+=id; cpu+="steps:"; cpu+="1000"; cpu+="verzeichnis:"; cpu+=ziel; cpu+="\""; string u="start /low "+aktuellesVerzeichnis+"\\Kammermodel.exe "+cpu; //cpuModellZuordnung[aktuellecpu]=a.at(i).ModellID; //i=modellid Sleep(2000); //damit kammermodelldatei geschrieben wird (verzögerung durch windows) system(u.c_str()); */ std::stringstream parameter; parameter << "\"cpu:1modellid:" << id << "steps:1000verzeichnis:" << ziel << "\""; std::stringstream startaufruf; startaufruf << "start /low " << aktuellesVerzeichnis << "\\Kammermodel.exe " << parameter; Sleep(2000); system ( startaufruf.str ().c_str() ); }
-
Warum haben alle so freude am casten???
string aktuellesVerzeichnis=(string)Buff;Ist einfach falsch.
Aus dem Buffer soll ein std::string konstruiert werden.string aktuellesVerzeichnis(Buff);Simon
-
theta schrieb:
Warum haben alle so freude am casten???
string aktuellesVerzeichnis=(string)Buff;Ist einfach falsch.
Aus dem Buffer soll ein std::string konstruiert werden.string aktuellesVerzeichnis(Buff);Simon
also nur weil ich vezweifelt bin hab ich das jetzt mal versucht, aber wie ich mir schon gedacht hatte hat das auch nicht funktioniert.
hatte gehofft das dadurch der string "ordentlich " ist aber ne geht immer noch nicht.wahrscheinlich sollte das auch nicht zu lösung beitragen oder?
-
wahrscheinlich sollte das auch nicht zu lösung beitragen oder?
Nein, natürlich nicht... wie könnte ich auch...
Simon
-
theta schrieb:
wahrscheinlich sollte das auch nicht zu lösung beitragen oder?
Nein, natürlich nicht... wie könnte ich auch...
Simonja hätte ja sein können
-
@mogli3,
Ich wiederhole mich, was ist inaktuellesVerzeichnisdrin? Was steht dort drin? Meiner Meinung nach beklagt sich nämlich das Shellkommandostartüber falsche Parameter.Grüssli
-
Dravere schrieb:
@mogli3,
Ich wiederhole mich, was ist inaktuellesVerzeichnisdrin? Was steht dort drin? Meiner Meinung nach beklagt sich nämlich das Shellkommandostartüber falsche Parameter.Grüssli
aktuellesVerzeichnis="c:\Dokumente und Einstellungen\user\Eigene Dateien\Visual Studio 2008\Projects\Kammermodelle Batch\Kammermodelle Batch" typ=std::basic_string<char,std::char_traits<char>,std::allocator<char> >also soweit ich mein ist das einfach das aktuelleverzeichnis zufällig in einem pfad mit leerzeichen
-
mogli3 schrieb:
also soweit ich mein ist das einfach das aktuelleverzeichnis zufällig in einem pfad mit leerzeichen
Und genau das ist das Problem. Das Kommando
starterwarte ja auch Parameter und das Kommando trennt die Parameter über die Leezreichen. Dein ursprünglicher Code, etwas abgeändert:string parameter="\"cpu:"; parameter+="1"; parameter+="modellid:"; parameter+=id; parameter+="steps:"; parameter+="1000"; parameter+="verzeichnis:"; parameter+=ziel; parameter+="\""; stringstartaufruf="start /low \""+aktuellesVerzeichnis+"\\Kammermodel.exe\" "+parameter; // <- Gänsefüsschen um den Pfad für das Programm gemacht. system(startaufruf.c_str());Wenn ich übrigens schon dabei bin:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39453.htmlDu benutzt zudem schon die WinAPI, daher könntest du auch gleich
ShellExecuteoderCreateProcessverwenden.Grüssli