none
Inhalt von einer TextBox auslesen und in textdatei speichern RRS feed

  • Frage

  • hi,
    ich hänge jetzt schon einige stunden an dem problem, dass ich eine TextBox auslesen will und den inhalt in eine Textdatei schreiben möchte.
    Dazu hab ich ein Handle eingerichtet die das Validate-Event abfängt.

    private: System::Void NameBox_Validating(System::Object^  sender, System::ComponentModel::CancelEventArgs^  e) {
    			 String ^NameString = String::Copy(NameBox->Text);
    			 array<Char>^namestringarr = NameString->ToCharArray();
    			 using namespace std;
    			 ofstream Datei1;
    			 Datei1.open("C:/Dokumente und Einstellungen/phil/Desktop/Datei1.txt");
    			 Datei1 << namestringarr << endl;
    			 Datei1.close();
    		 }
    mein Projekt kompiliert ohne fehler aber mit den Warnungen:

    warning C4800: 'cli::array<Type> ^': Variable wird auf booleschen Wert ('True' oder 'False') gesetzt (Auswirkungen auf Leistungsverhalten möglich)
    1>        with
    1>        [
    1>            Type=wchar_t
    1>        ]
    1>MainFrame.cpp
    1>c:\dokumente und einstellungen\phil\desktop\development\visual c++\retask\retask\TaskFrame.h(240) : warning C4800: 'cli::array<Type> ^': Variable wird auf booleschen Wert ('True' oder 'False') gesetzt (Auswirkungen auf Leistungsverhalten möglich)
    1>        with
    1>        [
    1>            Type=wchar_t
    1>        ]

    Die Text datei wird auch regülär erstellt ABER sie enthält egal was man eingibt eine 1.Das hängt höchst wahrscheinlich damit zusammen dass mein array auf einen Bool-Wetr gesetzt wird (oder???). Deshalb habe ich probiert einfach nur in der Kommandozeile das Array auszugeben wobei nie etwas angezeigt wurde ausser 'Drücken sie eine beliebeige....'.
    Warum wird das array auf 1 gesetzt bzw. wo kommt der bool-wert her?Lese ich mit NameBox->Text überhaupt die richtige Eigenschaft aus?
    Danek schonmal im vorraus
    greetz Philipp
    Mittwoch, 8. Juli 2009 15:51

Antworten

  • Du mischt hier die Typen von .NET/CLR und C++ wild durcheinander.
    ein Char und ein String sind Datentypen aus der .NET Welt. Ein ofstream ist aber Standard Library. Dieser nimmt IMHO nur einen char*, oder w_char*.
    Also müsstest Du den System.String erst umwanden.

    Siehe
    http://msdn.microsoft.com/en-us/library/d1ae6tz5(VS.80).aspx

    Einfacher ist sicherlich,m wenn Du das Datei I/O auchmit .NET Klassen machst.
    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Donnerstag, 9. Juli 2009 06:27

Alle Antworten

  • Du mischt hier die Typen von .NET/CLR und C++ wild durcheinander.
    ein Char und ein String sind Datentypen aus der .NET Welt. Ein ofstream ist aber Standard Library. Dieser nimmt IMHO nur einen char*, oder w_char*.
    Also müsstest Du den System.String erst umwanden.

    Siehe
    http://msdn.microsoft.com/en-us/library/d1ae6tz5(VS.80).aspx

    Einfacher ist sicherlich,m wenn Du das Datei I/O auchmit .NET Klassen machst.
    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Donnerstag, 9. Juli 2009 06:27
  • Ah^^ Danke.
     Habs jetzt mit String gemacht und den dann mit WriteLine() in die datei geschrieben!
    Vielen Dank!

    phil
    Mittwoch, 15. Juli 2009 10:58