system(""); funktioniert nicht
-
Hallo Leute,
Könnt ihr mir hier helfen?system("dir C:\\Users\\" + UserName + "\\Desktop\\mod_files");
UserName:
String^ UserName;
So jetzt der Fehler:
1>------ Erstellen gestartet: Projekt: Creeper's ModInstall, Konfiguration: Debug Win32 ------ 1> Creeper's ModInstall.cpp 1>c:\users\tim\documents\visual studio 2010\projects\creeper's modinstall\creeper's modinstall\Form1.h(288): error C2664: 'system': Konvertierung des Parameters 1 von 'System::String ^' in 'const char *' nicht möglich 1> Es ist kein benutzerdefinierter Konvertierungsoperator verfügbar, oder 1> Ein verwalteter Typ kann nicht in einen nicht verwalteten Typ umgewandelt werden ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
So der Fehler ist anscheint, dass Der String "UserName" nicht in system("") rein kann, da er den Operator "^" besitzt. Aber wie kirege ich es hin, dass der UserName String^ bleiben kann und trotzdem in system(""); reinpasst?`????
ich hoffe ihr versteht was ich meine
bitte helft mirlg timtrucker
-
Das ist C++/CLI, kein C++ und hat mit WinAPI herzlich wenig zu tun. Verschieben, bitte.
Abgesehen davon: Wenn du schon .NET benutzt kannst du auch gleich mit div. Klassen aus System::IO die Funktion von dir nachbauen. Und von system() ist eh immer abzuraten. Ganz besonders hier: Du mischst anscheinend Managed und Unmanaged Code ohne /clr:pure zu benutzen.
Entscheide dich: Willst du C++ programmieren oder C++/CLI?
Wenn du C++ programmieren willst, dann Programmiere C++ (und zwar ohne die system()-Scheiße!).
Wenn du C++/CLI programmieren willst, dann programmiere in C# oder VB, denn C++/CLI ist nur als Interop gedacht und nicht als Primärsprache.
-
system() ist nicht C++/CLI.
aber dein string ist C++/CLI.damit dein Programm funktioniert, mache es so:
LPCSTR UserName;
oder
const char *UserName;wobei das erste und das zweite genau gleich ist.
Irgendwo hier auf der Seite findest du aber einen Artikel warum system() nie eine Lösung ist!!
-
Abgesehen davon dass du offenbar C++/CLI benutzt (und dir dabei offenbar nicht so ganz sicher bist was du tust) und nicht C++ (warum auch immer): Wenn es C++ und WinAPI sein soll, ist das und das was du suchst.
In jedem Fall: Vergiss system().In keinem Fall kannst du da irgendwo direkt System::Strings übergeben, weil das eben managed Kram ist. Wenn du wirklich meinst, das tun zu müssen: Stichwort Marshalling. Natürlich bietet das .NET Framework selbst auch direkt entsprechenden Möglichkeiten: http://msdn.microsoft.com/en-us/library/system.environment.getfolderpath.aspx. Dann stellt sich aber natürlich wieder unweigerlich die Frage, warum es überhaupt C++/CLI sein muss und nicht einfach gleich C# sein kann?