RichtTextBox -> speichern / öffnen
-
Ich bastel mir im momment einen kleinen simplen Texteditor, nun bin ich auf ein Problem gestoßen. Ich habe bereits viele Codes durch google gefunden aber ich erhalte immer nur fehler, z.b. da:
SaveFileDialog SD = new SaveFileDialog(); SD.Filter = "RTF-Dokumente (*.rtf)|*.rtf|Alle Dateien(*.*)|*.*"; if(SD.ShowDialog() == DialogResult.OK) { richTextBox1.SaveFile(SD.FileName); }
komm das:
------ Erstellen gestartet: Projekt: sarp_pawn, Konfiguration: Debug Win32 ------ Kompilieren... sarp_pawn.cpp c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\sarp_pawn\sarp_pawn\Form1.h(237) : error C2750: "System::Windows::Forms::SaveFileDialog": "new" kann für den Referenztyp nicht verwendet werden. Verwenden Sie stattdessen ''gcnew''. c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\sarp_pawn\sarp_pawn\Form1.h(237) : error C3673: "System::Windows::Forms::SaveFileDialog": Die Klasse hat keinen Kopierkonstruktor. c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\sarp_pawn\sarp_pawn\Form1.h(239) : error C2039: 'OK': Ist kein Element von 'System::Enum' c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll: Siehe Deklaration von 'System::Enum' c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\sarp_pawn\sarp_pawn\Form1.h(241) : error C2228: Links von ".SaveFile" muss sich eine Klasse/Struktur/Union befinden. Typ ist 'System::Windows::Forms::RichTextBox ^' Wollten Sie stattdessen '->' verwenden? Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Admin\Eigene Dateien\Visual Studio 2008\Projects\sarp_pawn\sarp_pawn\Debug\BuildLog.htm" gespeichert. sarp_pawn - 4 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
----
Der ganze Code dafür wird ausgeführt wenn man im menustrip auf eine Schaltfläche klickt.
Das ganze müsste doch eigentlich so gehen: rtb->string->savedialog->save
-
Dann schreib das auch so.
Du klatschst C# Code in C++/CLI rein, schon etwas dämlich.
Grundlagen mal angucken, oder ist das ein Fake?
Weil, so dämlich kann nun wirklich niemand sein.Gruß
-
Ach das ist c# code, da wo ich das her hab stand c++
kann mir jemand jeweils nen c++ code für speichern und öffnen geben?
-
Also mal als Beispiel:
//Speichern unter-Dialog void SaveAs() { SaveFileDialog ^saveFileDialog1 = gcnew SaveFileDialog(); //Startverzeichnis vorgeben, danach immer das zuletzt //angesteuerte Verzeichnis verwenden (Nicht die Vorgabe wiederherstellen saveFileDialog1->InitialDirectory = "."; saveFileDialog1->RestoreDirectory = false; //Filer für Dateien mit den Extension .txt und .* saveFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; //Ersten Filter als Vorgabe wählen saveFileDialog1->FilterIndex = 1; if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) { SaveFile(saveFileDialog1->FileName); } }
Wobei Du natürlich das befüllen der Datei dann noch selbst machen musst, ist hoffentlich klar.
Grüße Solick
-
kann mir jemand jeweils nen c++ code für speichern und öffnen geben?
Das willst Du doch gar nicht... Du möchtest wahrscheinlich C++/CLI Code.
Nicht?
Simon
-
@theta: sorry, ich meinte c++/CLI
@solick: Danke, aber:
c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\sarp_pawn\sarp_pawn\Form1.h(234) : error C2601: 'SaveAs': Lokale Funktionsdefinitionen sind unzulässig c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\sarp_pawn\sarp_pawn\Form1.h(250) : error C3861: "SaveFile": Bezeichner wurde nicht gefunden.
Mein Code:
private: System::Void toolStripMenuItem2_Click(System::Object^ sender, System::EventArgs^ e) { //SAVE DIALOG //Speichern unter-Dialog void SaveAs() { SaveFileDialog ^saveFileDialog1 = gcnew SaveFileDialog(); //Startverzeichnis vorgeben, danach immer das zuletzt //angesteuerte Verzeichnis verwenden (Nicht die Vorgabe wiederherstellen saveFileDialog1->InitialDirectory = "."; saveFileDialog1->RestoreDirectory = false; //Filer für Dateien mit den Extension .txt und .* saveFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; //Ersten Filter als Vorgabe wählen saveFileDialog1->FilterIndex = 1; if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) { SaveFile(saveFileDialog1->FileName); } } }
-
Du definierst ja auch eine Funktion innerhalb einer Funktion...
Definier die Funktion SaveAs im Form-Code und ruf sie dann in der Funktion toolStripMenuItem2_Click nur auf.
Wenn Du die Funktionalität nur dort brauchst, ist die Funktion eh überflüssig...
SaveFile ist dann die Funktion, mit der Du tatsächlich speicherst...
Kauf Dir mal eines der vielen Einführungsbücher in VC++2008 da sind viele Codebeispiele. Ausserdem wird allgemein erläutert, wie in VC++ programmiert wird (Stichwort Objektorientierung etc.)
Gruß Solick
-
Achso.
Void() { und } hab ich jetzt in der Funktion vom Button entfernt. Jetzt komm nur noch das.
c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2008\projects\sarp_pawn\sarp_pawn\Form1.h(331) : error C3861: "SaveFile": Bezeichner wurde nicht gefunden.
-
ganz einfach. Weil SaveFile eine Funktion ist, die dann tatsächlich Inhalte in die Datei Speichert...
Die muss natürlich noch erstellt werden...
Ich denke es macht wirklich Sinn, dass Du Dich mit den Grundlagen beschäftigst...
-
Ja stimmt. Ich dachte PAWN ist fast genauso, ist aber doch ein wenig anders. Aber das wird dann bestimmt nicht so schwer da ich PHP und PAWN gut beherrsche.
Kann mir jemand ein paar Tutorials / online Bücher empfehlen?
-
SaveFile ist eine Funktion vom RichTextBox, die kannst Du nicht so ohne Sinn in den Raum klatschen...
Hier der Code...
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //Speichern unter-Dialog //void SaveAs() <-<-<-WAS SOLL DAS? //{ SaveFileDialog ^saveFileDialog1 = gcnew SaveFileDialog(); //Startverzeichnis vorgeben, danach immer das zuletzt //angesteuerte Verzeichnis verwenden (Nicht die Vorgabe wiederherstellen saveFileDialog1->InitialDirectory = "."; saveFileDialog1->RestoreDirectory = false; //Filer für Dateien mit den Extension .txt und .* saveFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; //Ersten Filter als Vorgabe wählen saveFileDialog1->FilterIndex = 1; if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) { //SaveFile, ein Member von RichTextBox-Control, nix für mitten in Raum klatschen: richTextBox1->SaveFile(saveFileDialog1->FileName); } //} }
Hier noch ein OpenBook in C#, für C++/CLI wirst Du ganz, ganz, ganz schwer gute Bücher finden, aber C# läßt sich (nicht immer ganz leicht) in C++/CLI umschreiben...
http://openbook.galileocomputing.de/visual_csharp/
Gruß, Heiner
-
Sorry, aber da muss ich widersprechen...
Ich hatte in meinem Beispiel eine Funktion SaveFile, in der dann (in diesem Fall der Inhalt einer Textbox) in das File geschrieben wird.
Die Funktion sieht so aus:
//Speichern void SaveFile(String ^datnam) { //Speichert die Datei try { StreamWriter ^sw = gcnew StreamWriter(datnam); sw->Write(textBox1->Text); sw->Close(); } catch (IOException ^ex) { MessageBox::Show("Datei konnte nicht gespeichert werden.","Fehler"); } finally { } }
Da ist nix einfach hingeklatscht... ich wollte nur nich den kompletten Code vorschreiben...