Befehlcode unter vc2008



  • hallo,
    ein Neuling bittet um Euch um Hilfe:
    der 1.folgende Code der so nicht funktioniert:

    private: System::Void pictureBox35_Click(System::Object^  sender, System::EventArgs^  e) {
    			System::Diagnostics::Process::Start("C:\\Program Files\\Tweak-7\\Commands.exe -SHUTDOWN");//für exit
    

    }
    der 2. Codeteil bereitet mir auch große Probleme (trotz Suche bei msdn und goggle:

    private: System::Void pictureBox35_Click(System::Object^  sender, System::EventArgs^  e) {
    			System::Diagnostics::Process::Start("copy C:\\versuch.txt g:\\versuch.txt");//für copy 
    		 }
    

    könnt Ihr mir bitte weiterhelfen?, danke



  • http://msdn.microsoft.com/de-de/library/e8zac0ca%28VS.80%29.aspx
    

    Instanz erstellen

    Lern erstmal C mit einfachen Einhabeauforderung anwendungen.



  • LiGERWooD schrieb:

    http://msdn.microsoft.com/de-de/library/e8zac0ca%28VS.80%29.aspx
    

    Instanz erstellen

    Lern erstmal C mit einfachen Einhabeauforderung anwendungen.

    @LiGERWooD:
    Was soll der Quatsch mit C. Um C++/CLI zu verstehen ist C nicht nötig.

    @oldi:
    Was geht nicht? Compliler Error? Linker Error? Laufzeit Error? Exception? Unerwartetes Verhalten?

    Simon

    Edit
    Ausserdem muss keine Instanz erstellt werden. Start() gibts als statische Methode.



  • also beim linken, kompilieren ... gibt es keine Meldungen!
    nur der copy Befehl wird nicht ausgeführt.
    beim 1. Beispiel habe ich mir mit einer Batch vorerst beholfen.
    Übrigends sollte in einem Board nicht Lehrmeisterlich geantwortet werden (siehe Grundlagen lernen ...), sondern bitte sehr, eher sachliche Diskussion stattfinden, denn dann hat auch der Fragende etwas davon!



  • Wenn du mal richtig hingucken würdest wenn du die '(' nach dem System::Diagnostics::Process::Start setzt und dann dir die verschiedenen Variationen aus dem ToolTip anguckst, würdest du sehen dass der String^ für eine Pfad und Dateiname -Angabe zur ausführenden Datei ist und nicht eines CMD Befehls.



  • Es gibt keinen Copy-Befehl... es sei denn Du hast den von dem Console-Prompt gemeint... dann muss es aber heissen: "cmd /c copy ...".

    Auch wäre es einfach System::IO::File::Copy zu verwenden...



  • bin nur wenig schlauer geworden

    private: System::Void label84_Click(System::Object^  sender, System::EventArgs^  e) {
    			 System::IO::File::Copy("C:\\versuch.txt g:\\versuch.txt");//für copy
    		 }
    

    bekomme jetzt eine Fehlermeldung:
    'System::IO::File::Copy': Keine überladene Funktion akzeptiert 1 Argumente
    bitte um Eure Hilfe, danke



  • http://msdn.microsoft.com/en-us/library/system.io.file.copy.aspx

    Copy(String, String) Copies an existing file to a new file. Overwriting a file of the same name is not allowed.

    Copy(String, String, Boolean) Copies an existing file to a new file. Overwriting a file of the same name is allowed.



  • System::IO::File::Copy("C:\\versuch.txt", "g:\\versuch.txt");
    


  • danke, hat mit dem Beistrich funktioniert.
    wenn die Datei im Zielordner jedoch vorhanden ist und überschrieben werden soll
    habe ich bool verwendet. hier der Code:

    System::IO::File::Copy("C:\\versuch.txt", "g:\\versuch.txt", bool overwrite);
    

    damit gab es erneut eine Fehlermeldung: error C2062: 'bool'-Typ unerwartet
    könnt ihr mir da noch einen Tipp geben?,
    danke



  • oldi schrieb:

    danke, hat mit dem Beistrich funktioniert.
    wenn die Datei im Zielordner jedoch vorhanden ist und überschrieben werden soll
    habe ich bool verwendet. hier der Code:

    System::IO::File::Copy("C:\\versuch.txt", "g:\\versuch.txt", bool overwrite);
    

    damit gab es erneut eine Fehlermeldung: error C2062: 'bool'-Typ unerwartet
    könnt ihr mir da noch einen Tipp geben?,
    danke

    Junge, Junge... Das sind Parameter die in der Funktion deklariert sind. Jeder Parameter ist durch ein ',' getrennt. Und jeder Wert (bei mehreren vor dem ',') ist ein übergebens Argument. Aber du solst nur noch die zu zu weisenden Werte angeben und nicht eine neue Variable erstellen. Also weise bool nur noch zu was du wilst. In dem fall nämlich true



  • bitte erkläre mir das mit dem:

    bool overwrite);
    

    bool true noch einmal. Um die Lösung meines Problemes wäre ich dir sehr verbunden, denn ohne deine Hilfe schaffe ich das trotzdem nicht und somit wäre der Lerneffekt gegeben
    vorerst danke



  • Hast du schon einfache Eingabeaufforderung Anwendungen geschrieben?

    Also so mit Console::WriteLine("Hallo Welt!");
    Oder printf("Hallo Welt!");
    ???

    Wenn du eine Variable deklarierst (String ^ichSpeichereMehrereUnicodeZeichen;) und ihr dann einen Wert zu weisen wilst schreibst du ja auch ichSpeichereMehrereUnicodeZeichen = "Neuer Text";
    und nicht wieder String ^ichSpeichereMehrereUnicodeZeichen = "Neuer Text";

    Die Funktion System::IO::File::Copy ist folgendermaßen deklariert:

    public: static void Copy(String^ sourceFileName, String^ destFileName, bool overwrite)
    

    Wenn du jetzt die Funktion aufrufst, musst du die deklarierten Übergabeparameter als Argumente übergeben, und zwar in der '()'. Argumente übergeben heißt aber nur noch den zu zu weisenden wert ein zu tragen, also das was hinter '= ' kommt. Da sourceFileName ein String^ ist kannst du hier nur ein String übergeben und bei overwrite natürlich nur ein bool.

    bool kann man zwei arten zuweisen, true und false.

    Und da du eine überschreibung wünscht gibst du bei dem Parameter bool overwrite, einfach nur noch true an:

    System::IO::File::Copy("", "", true);
    

    Die platzhalter (Leerzeichen), wie ich sie jetzt gesetzt habe, darfst du übrigens auch setzten. Hilft dir vielleicht bei der übersichtlichkeit und dem Verstehen.

    Stell es dir wie ein Formular vohr:

    String^ sourceFileName [________________________]
    String^ destFileName   [________________________]
    bool overwrite         [________________________]
    

    Wie bei:

    Vor- und Nachname      [________________________]
    Kundennummer           [________________________]
    

    Wenn du das nicht versteht, hast du wohl kein Logisches Mechanisches Motorisches verständnis und dann würde ich Programmieren lieber sein lassen! 😉



  • danke für Dein Verständnis und Mühe, alles ok, das war eindeutig und lehrreich


Anmelden zum Antworten