Pfad für out.open per Variabel übergeben



  • Wie der Titel schon sagt möchte ich den Pfad per Variabel übergeben. Jedoch kommen immer 4 Fehlermeldungen.

    string path;
    
    			 path = pfad->Text;
    
    			describe->Text = "Bei der Vollständigen Installation werden neue Freaturen, wie z.B. Karten und Waffen hinzugefügt.";
    
    			ofstream out;
    			out.open(path += "Test.txt", ios_base::out);
    			//Durch das ios_base::out wird der Inhalt gelöscht
    			out.close();
    

    Fehle:

    string path;
    
    			 path = pfad->Text;
    
    			describe->Text = "Bei der Vollständigen Installation werden neue Freaturen, wie z.B. Karten und Waffen hinzugefügt.";
    
    			ofstream out;
    			out.open(path += "Test.txt", ios_base::out);
    			//Durch das ios_base::out wird der Inhalt gelöscht
    			out.close();
    


  • string path;
    path = pfad->Text;
    path +=  "Test.txt";
    describe->Text = "Bei der Vollständigen ..."; 
    
    ofstream out;
    out.open(path.c_str(), ios_base::out); 
    //Durch das ios_base::out wird der Inhalt gelöscht 
    out.close();
    


  • minder (der anfänger) schrieb:

    Jedoch kommen immer 4 Fehlermeldungen.

    Und welche?



  • minder (der anfänger) schrieb:

    Jedoch kommen immer 4 Fehlermeldungen.

    Bitte:
    a) Reduziere den Code so, das die Fehler noch auftreten, aber schreibe genügend damit wir es nachvollziehen können
    b) Teile mit was für Fehler (bitte immer nur die ersten paar, in der Regel ist nur der erste von Relevanz und der Rest resultiert daraus).

    Meine Glaskugel habe ich seit 31 Jahren verlegt...

    cu André



  • Sorry!!

    Hab mal den Tipp probiert.

    string path;
    path = System::Convert::ToString(pfad->Text);
    path +=  "Test.txt"; 
    
    			describe->Text = "Bei der Vollständigen Installation werden neue Freaturen, wie z.B. Karten und Waffen hinzugefügt.";
    
    ofstream out;
    out.open(path.c_str(), ios_base::out);
    //Durch das ios_base::out wird der Inhalt gelöscht
    out.close();
    

    Fehlermeldungen

    Fehler	1	error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'System::String ^' akzeptiert (oder keine geeignete Konvertierung möglich)	c:\users\nanohack\documents\visual studio 2008\projects\call of duty patch 1.8\call of duty patch 1.8\f2.h	262
    Fehler	2	error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'System::String ^' akzeptiert (oder keine geeignete Konvertierung möglich)	c:\users\nanohack\documents\visual studio 2008\projects\call of duty patch 1.8\call of duty patch 1.8\f2.h	262
    


  • Du versucht, einen System::String (keine Ahnung, was das ist. CLI?) einem std::string zuzuweisen. Das sind aber unterschiedliche Typen.



  • Soweit bin ich auch. Aber wie kann ich das umgehen? 🙂



  • minder (der anfänger) schrieb:

    Soweit bin ich auch. Aber wie kann ich das umgehen? 🙂

    Dazu musst Du Dir die Schnittstellen der verwendeten Klassen (System(?)::String und std::string) ansehen und schauen, ob's dazwischen eine Verbindung gibt ...

    Gruß,

    Simon2.



  • Könnet man mein Vorhaben auch anderst realisieren? 🙂



  • Warum verwendest Du überhaupt diese 2 verschiedenen Formen der "Zeichenkettenverarbeitung" ?

    Gruß,

    Simon2.



  • minder (der anfänger) schrieb:

    Könnet man mein Vorhaben auch anderst realisieren? 🙂

    Auf CLI verzichten und Standard C++ benutzen?

    Ansonsten:
    Gewusst wie: Konvertieren von System::String zu Standardzeichenfolge



  • Ich habe nicht viel ahnung. Ich bin noch neu. Ich will eigentlich nur einen Pfad aus einem Eingabefeld in eine Variable speichern und damit den out.open füttern



  • Für die Konvertierung hier gucken (FAQ):
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-158664.html

    Ausserdem würde managed und unmanaged Code nur mischen wenns nicht anders geht.

    Simon



  • WinAPI oder MFC wären direkte Alternativen zu dem CLI-Gedöhns. Oder Du benutzt externe APIs für grafiscge Oberflächen wie z.B. Qt oder gtk+.



  • Hallo

    Ich hab das Programm zum laufen gebracht. Jedoch kommt folgendes Fester beim debugen:
    Eine nicht behandelte Ausnahme des Typs "System.FormatException" ist in mscorlib.dll aufgetreten.

    Zusätzliche Informationen: Die Zeichenfolge darf nur genau ein Zeichen lang sein.

    in folgender linie ist der Fehler:
    path[500] = System::Convert::ToChar(pfad->Text);



  • minder (der anfänger) schrieb:

    Ich habe nicht viel ahnung. Ich bin noch neu. Ich will eigentlich nur einen Pfad aus einem Eingabefeld in eine Variable speichern und damit den out.open füttern

    Aber offensichtlich überschreiten DEine Ziele Deine Möglichkeiten.
    => Ziele niedriger stecken.(z.B. auf GUI verzichten)
    Ich weiß: Heutzutage wird oft suggeriert, mit einfachem "Zusammenkopieren" könne man alles machen (und sich den mühsamen Weg des Verstehens ersparen) ... aber das stimmt eben letztlich doch nicht oder nur sehr eingeschränkt.
    Echtes Verstehen ist eben nur durch Verstehen zu ersetzen - und nicht durch "Nimm dies und werde glücklich". 😃

    minder (der anfänger) schrieb:

    ...Ich hab das Programm zum laufen gebracht. ...

    Augenscheinlich nicht.

    minder (der anfänger) schrieb:

    ...path[500] = System::Convert::ToChar(pfad->Text);

    😮 😮 😮
    Huh, das ist ja grausig!
    Sorry, aber das bestätigt mich noch mehr in meiner Annahme: Versuche erst einmal Dir, anhand kleinerer Programme, die Grundlagen des Programmierens anzueigenen...
    Hier besonders: Einlesen, Verändern und Ausgeben von Zeichenketten.

    Gruß,

    Simon2.

    Gruß,

    Simon2.



  • Ich hab nicht sachen zusammen kopiert. Ich arbeite mit Visual C++.



  • minder (der anfänger) schrieb:

    Ich hab nicht sachen zusammen kopiert. Ich arbeite mit Visual C++.

    Aber dann musst Du doch Folgendes beantworten können:

    Simon2 schrieb:

    Warum verwendest Du überhaupt diese 2 verschiedenen Formen der "Zeichenkettenverarbeitung" ?

    Gruß,

    Simon2.

    (Bitte "Kopieren" nicht zu wörtlich definieren: Auch das Nutzen eines Codegenerators führt letztlich nicht zu selbstgeschriebenem Code).

    Gruß,

    Simon2.



  • minder (der anfänger) schrieb:

    Ich hab nicht sachen zusammen kopiert. Ich arbeite mit Visual C++.

    Vor allem aber arbeitest du nicht mit dem Standard C++, sondern mit C++/CLI. Dafür gibt es ein separates Forum da C++/CLI != C++ ist. Und du mischt managed mit unmanaged Code ohne wenn und aber. C++/CLI ist zwar dafür geeignet zwischen der nativen C++ Programmierung und der Managed-Welt (.Net Framework & Co) zu vermitteln, aber es kommt immer auf die Mischung an.

    cu André


Anmelden zum Antworten