Problem mit MessageDlg und Zeilenumbruch



  • Hallo,

    Problem ist er macht in MessageDlg kein Zeilenumbruch '\n'

    Ich lade aus einer Datei mit TIniFile aus und dann Speichere ich den in ein 'String'

    Bei der Übergabe an MessageDlg zeigt er mir die dann an.
    Macht aber kein Zeilenumbruch 😞

    Wieso macht er das?

    Wen ich den Text direkt eingebe geht das.



  • Zeige mal etwas Quelltext bitte!



  • Ok

    ... In der Header Datei
    private:	// Benutzer-Deklarationen
    	String MSGArray[1];
    ...
    
    String __fastcall TMyApps::Language(TIniFile *FV_LanguageInI, String FV_sPraefix, int FV_iID, String FV_sDefault)
    {
    	return FV_LanguageInI->ReadString(FV_sPraefix, String(FV_iID), FV_sDefault);
    }
    //---------------------------------------------------------------------------
    
    MSGArray[0] = MyApps->Language(MainForm->LanguageInI, "Text", 4001); // Medium schon vorhanden!\n\nBitte verwenden Sie ein anderen.
    
    ...
    
    MessageDlg( MSGArray[0], mtInformation, TMsgDlgButtons() << mbOK, 0);
    

    Wie gesagt es kommt dann "Medium schon vorhanden!\n\nBitte verwenden Sie ein anderen." raus



  • Beachte, dass die Escapesequenz '\n' im C++-Quelltext vom Compiler zu ASCII-Code 10 gemacht wird, während es auch die einzelnen Zeichen \ und n gibt.



  • Ja hmm

    kann man das irgend wie dann zu ASCII-Code 10 machen?



  • Hallo,

    ersetze Mal das \n in MSGArray[0] durch \n\r mit der Funktion ReplaceString und schaue ob das dann funktioniert

    MSGArray[0]=ReplaceString(MSGArray[0],"\\n","\n\r",TReplaceFlags() << rfReplaceAll);
    
    MessageDlg( MSGArray[0], mtInformation, TMsgDlgButtons() << mbOK, 0);
    

    Wenn ich jetzt keinen Syntaxfehler eingebaut habe, dann müsste es so funktionieren.

    Gruß
    Hawk



  • Hi,

    Danke Hawk

    Nur das ReplaceString gibt es nicht es ist 'StringReplace'

    Und so klapp es 🙂

    StringReplace(MSGArray[0],"\\n","\n",TReplaceFlags() << rfReplaceAll);
    

    Danke noch mal

    Gruß Markus


Anmelden zum Antworten