RichEdit in Datei



  • Hallo mal wieder!

    Ich möchte den Text eines RichEdit in einer Datei abspeichern, den Dateinamen bekomme ich von einer anderen Funktion und muss nur die Erweiterung ändern.
    Hier bekomme ändere ich den Dateinamen:

    AnsiString CAEName, FName, FPath; //FPath ist global!!!
    CAEName = ExtractFileName(XMLDocument->FileName); // FileName + Extension
    FName = CAEName.Delete((CAEName.Length()-3),4);   // FileName ohne Extension
    FPath = ExtractFilePath(XMLDocument->FileName)+FName;
    FPath += ".cad";  // vollständiger Pfad mit cad-Extension
    

    Hier versuche ich den Namen zu verwenden:

    :arrow_right: ofstream    File(FPath);
    //Blabla schreibe Daten in RichEdit...
    OKRightDlg->RichEdit1->Lines->SaveToStream(File);
    

    An der markierten Stelle bringt der Compiler mir einen Fehler, der besagt, dass es keine Übereinstimmung für 'ofstream::basic_ofstream(AnsiString)' gibt bzw. gefunden wurde. Habe den Header <fstream> aber eingebunden, genauso wie using namespace std!
    Bin für jeden Fehler oder Hinweis dankbar!
    Bis bald, Jannika
    PS: in dem AnsiString FPath muss ich noch die \ ändern bzw. einen durch zwei ersetzen! Oder?!



  • Hallo,

    Hier geht ja einiges durcheinander.

    1. Der Konstruktor von ofstream erwartet ein char * keinen AnsiString (also ofstream File(FPath.c_str()).
    2. SaveToStream erwartet ein TStream als Argument, kein ofstream.
    3. Warum nicht gleich SaveToFile statt SaveToStream
    siehe auch folgenden Thread http://www.c-plusplus.net/forum/viewtopic.php?t=96562&highlight=richedit+speichern



  • Oje....Ich brauche wohl noch eine ganze Weile bis ich mich Programmiererin nennen darf... 😞

    Vielen Dank!

    Ich habe mein Programm jetzt folgendermaßen geändert:

    FPath = AnsiReplaceStr(FPath,"\\","\\\\");
    OKRightDlg->RichEdit1->Lines->SaveToFile(FPath);
    

    Jetzt kommt kein Fehlermehr, die Datei wird auch erstellt, aber es wird nur Müll reingeschrieben:
    {\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil MS Sans Serif;}}
    \viewkind4\uc1\pard\f0\fs16
    \par }

    Warum wird der Text nicht gespeichert??? 😡



  • Das ist eine RTF-Datei. Mach sie einfach mal in Word auf.



  • Der Text wird wohl doch nicht gespeichert, denn wenn ich die Datei mit Word aufmache kommt gar nichts!



  • den Teil

    AnsiString CAEName, FName, FPath; //FPath ist global!!!
    CAEName = ExtractFileName(XMLDocument->FileName); // FileName + Extension
    FName = CAEName.Delete((CAEName.Length()-3),4);   // FileName ohne Extension
    FPath = ExtractFilePath(XMLDocument->FileName)+FName;
    FPath += ".cad";  // vollständiger Pfad mit cad-Extension
    

    kannst du durch

    AnsiString CAEName = ChangeFileExt(XMLDocument->FileName, ".cad")
    

    ersetzen und dann brauchst du eigentlich nur noch

    OKRightDlg->RichEdit1->Lines->SaveToFile(CAEName);
    

    machen

    müßte eigentlich funktionieren...



  • Tatsache, ist ja wirklich einfacher!!! 🙂

    Aber leider funktioniert das Speichern trotzdem noch nicht! Die Datei wird ertellt und ich kann sie auch öffnen, aber dann passiert nichts mehr... Also doch, die Schriftart und -größe ändert sich aber Text ist keiner zu sehen! Muss ich noch irgendetwas anderes bedenken? Irgendeinen bestimmten parameter bei RichEdit einstellen?

    Werde gleich mal ein Minimalbeispiel erstellen, mal schauen ob das auch schief geht... Wenn jemand aber eine Idee für mich hat, nur her damit! Ich probiere alles aus, nur so kann man lernen!



  • hm, sieht so aus, als würdest Du nichts in das RE reinschreiben...



  • Also ich schreibe eine ganzen normalen text in das RichEdit und auch bei der laufzeit sehe ich das RichEdit mit dem geschriebenen Text. Dann müsste da ja auch was drin stehen, oder?!

    Ich weiss einfach nicht an was es liegen kann 😞


  • Mod

    Hallo

    schreibst du denn ueberhaupt in die richtige Datei (Pfad)

    was passiert wenn du diese Datei mit einem Text vorbelegst
    wird dieser Text ueberschrieben

    Debugger !

    MfG
    Klaus



  • Ich nehme mein Gejammere zurück!

    Ich hatte zwei Formulare, auf dem einen war das RichEdit und auf dem anderen die Daten, die in die Datei geschrieben werden sollten. Jetzt habe ich RichEdit vollgeschrieben, das zweite Formular modular geöffnet und beim Schließen, (dummerweise) das RichEit gelöscht.... 🙄

    Und erst danach die Datei geschrieben, das war einfach nur DUMM!!!!!!!

    Jetzt klappt alles und ich danke für eure Mühe! 👍


Anmelden zum Antworten