String in MessageBox



  • Hallo,

    ich arbeite zur Zeit mit Embarcadero XE5 und habe eine Frage zur Behandlung von Strings in MessageBoxen.

    Ich würde gerne meine Messagebox abhängig von einem Stringinhalt darstellen.

    Momentan sieht das ganze noch sehr statisch aus:

    void __fastcall Tmain3d::Version1Click(TObject *Sender)
    {
    
       ::MessageBox(NULL, " Version:   2.1 \n Date:       13.01.2016    ", "Version",MB_ICONINFORMATION);
    }
    

    Ich würde gerne die Versionsnummer und die Dateinfo aus einem String nutzen.

    Ich hätte jetzt an folgendes gedacht:

    void __fastcall Tmain3d::Version1Click(TObject *Sender)
    {
    string StrVersion = "20";
    
       ::MessageBox(NULL, " Version:   "+StrVersion+" \n Date:       13.01.2016    ", "Version",MB_ICONINFORMATION);
    }
    

    Der Compiler meldet daraufhin:
    [bcc32 Fehler] main.cpp(3894): E2096 Ungültige Strukturoperation

    Bin über jede Hilfe dankbar.

    Gruß
    Julian



  • Hallo,
    das Problem liegt wahrscheinlich an dem Zusammenfügen von den unterschiedlichen Zeichenliteralen. Bei älteren Versionen heisst der Fehler "Ungültige Zeigeraddition". Die MessageBox arbeitet mit UnicodeString und Du versucht jetzt ein String einzufügen. Entweder änderst Du StrVersion zu UnicodeString oder verknüpfst den String passend und ersetzt StrVersion durch UnicodeString(StrVersion)
    Viel Erfolg



  • Hallo,

    ich habe es mit statischen Stringinhalten hinbekommen:

    void __fastcall Tmain3d::Version1Click(TObject *Sender)
    {
    AnsiString AStrVersion = SOFTWAREVERSION;   // 2.1
    AnsiString AStrDate = BUILDDATE;            // 13.01.2016
    AnsiString AStrVersionCmpl = "nVersion: \t" + AStrVersion + "\nDate: \t" + AStrDate;
    
    		 ::MessageBox(NULL, AStrVersionCmpl.c_str(), "Version",MB_ICONINFORMATION);
    
    }
    

    Ich habe die Versionsnummer und Builddatum in einer zentralen Datei über DEFINE gespeichert.
    Wie kann ich z.B. das Datum 13.01.2016 in einem String speichern?
    Bekomme aktuell die Fehlermeldung:
    [bcc32 Fehler] main.cpp(3893): E2223 Zu viele Dezimalzeichen



  • Hallo,
    anscheinend wird das Datum als Fließkomma interpretiert. Versuch mal das BUILDDATE als String mit doppelten Anführungszeichen zu definieren.

    Viel Erfolg



  • CBuilder_Fan schrieb:

    Hallo,
    anscheinend wird das Datum als Fließkomma interpretiert. Versuch mal das BUILDDATE als String mit doppelten Anführungszeichen zu definieren.

    Viel Erfolg

    hat geklappt, besten Dank 👍



  • Hi,
    um nicht immer mit deneinzelnen Parametern von Messagebox hantieren zu müssen hab ich mir da zwei Funktionen Frage und Meckern geschrieben, die die Benutzung vereinfachen.

    Gruß Mümmel



  • Soso.


Log in to reply