In Messagebox String zusammen setzen?



  • Hallo,

    bin auf C++ Builder 6 umgestiegen und kämpfe mit den
    Variabeln:

    int i1;
    AnsiString z1 = "Test String\n\n2. Zeile";
    i1=Application->MessageBoxA(z1.c_str(),"Test Abfrage",MB_OK);
    if (i1=1)
    Application->MessageBoxA("Ergebnis ist: ",IntToStr(i1).c_str(),MB_OK);

    Ich möchte das in i1 enthaltene Ergebnis direkt hinter dem Text
    "Ergebnis ist: " stehen haben. So funktioniert es aber nicht:
    Application->MessageBoxA("Ergebnis ist 6" + IntToStr(i1).c_str(),"Test",MB_OK);

    Was mache ich falsch bzw. was verstehe ich falsch?? 😕

    Danke für Tips.



  • Hallo

    Du must denn Text erstmal in einen AnsiString zusammenfügen, bevor du diesen dann komplett als C-String an die Funktion übergibst

    Application->MessageBoxA(AnsiString("Ergebnis ist 6" + IntToStr(i1)).c_str(),"Test",MB_OK);
    

    Btw : benutzt die C++ -Tags zum Einfassen deines Quellcodes hier im Forum. Das findest du im "Antwort schreiben"-Dialog in der Button-Leiste unter den Smilies.

    bis bald
    akari



  • Soll:
    Application->MessageBoxA("Ergebnis ist 6" + IntToStr(i1).c_str(),"Test",MB_OK);

    Möglichkeit:
    char zeile[100];
    sprintf(zeile,"Ergebnis ist: %d",i1)
    Application->MessageBox(zeile,"Test",MB_OK);



  • Hallo

    @Stevens : Es gibt keinen Grund, alte C-Mittel zu verwenden, wenn es C++ und VCL-Möglichkeiten gibt.

    bis bald
    akari



  • @akari

    Wie sind denn die neuen C++ Möglichkeiten?

    Gruss Stefan



  • Ja er kann auch

    AnsiString zeile = "Ergebnis ist: " + IntToStr(i1);
    Application->MessageBox(zeile.c_str(),"Test",MB_OK);

    Ich dachte aber wenn man eh casten muss, dann gleich richtiger Typ nehmen.
    Schliesslich ist MessageBox vom Typ char und nicht string oder AnsiString.
    War mir nicht bewusst, das es so negativ aufgenommen wird. 😉

    Oder gibts noch was besseres?



  • Hallo

    @Stefan7124 : das was ich geschrieben habe. Also die direkte Verwendung von AnsiString

    @Stevens : Meine Antwort war nicht negativ, sondern konstruktive Kritik. Du must doch selber zugeben, das die AnsiString-Lösung besser aussieht und und auch besser funktioniert. Denn es gibt keine Beschränkung auf eine maximale Anzahl von Zeichen, die man für nachträgliche Änderungen beachten muß.

    bis bald
    akari



  • Hallo,

    Das hier

    if (i1=1)
    Application->MessageBoxA("Ergebnis ist: ",IntToStr(i1).c_str(),MB_OK);
    

    sollte sich der OP auch nochmal genauer ansehen.



  • @Braunstein

    Hallo,

    da ich Anfänger bei C++ bin und mir im Moment etliche graue Haare
    wachsen (programmiere seit sehr vielen Jahren GB32)) freue ich mich
    hier über jeden Hinweis.

    Was ist denn daran zu verbessern bzw. falsch?
    If (i1=1)
    Application ...

    Aber noch eine Frage: Kann man den Hintergrund des Builder 6 C++
    nicht komplett ausfüllen lassen? Im Hintergrund immer die anderen
    Programme sehen und versehentlich anklicken zu können finde ich echt
    genial bescheuert.

    Gruss Stefan



  • das i1=1 in deinem if ist kein Vergleich sondern eine Zuweisung. Richtig wäre i1==1.
    Zur zweiten Frage:
    Da ist mir nichts bekannt. Einen ähnlichen Effekt kann man erreichen wenn man GExperts installiert hat und dort "perfect Layout" verwendet. Da werden dann alle Fenster einigermaßen vernünftig angeordnet und der Hintergrund ist nicht mehr zu sehen. Das geht aber nicht automatisch und muss somit immer mal wiederholt werden.



  • Danke für den Hinweis!

    Leider blicke die Online Hilfe noch nicht ganz;
    ich vermisse irgendwie eine Alphabetische Auflistung
    aller Befehle und Funktionen mit Beispielcode.
    Im Forum konnte ich bis jetzt nur rauslesen, daß es
    das scheinbar nur bis Version 5 gab (warum auch immer)

    Stefan



  • Eine alphabetische Liste halte ich hier nicht für sinnvoll. Am Einfachsten ist es hier, du gehst in den Index (der Hilfe) und tippst deine Buchstaben ein. Das wird dann ja immer weiter eingeschränkt.



  • Hallo

    nunja, eine komplette alphabetische Liste mit allen Funktionen und Klassen ist auch nicht wirklich wichtig. Würdest du dir denn diese wirklich durchlesen? Hast du dir jemals ein Lexikon durchgelesen?
    Du must mit einem konkreten Problem rangehen, dann mit der Suche und den Links dich durch die einzelnen Teile navigieren. Dann findest du was du brauchst.

    /Edit : Braunstein, ich sehe wir verstehen uns 😉

    bis bald
    akari



  • Ja, ich lese bei einer neuen Programmiersprache in der Tat die
    alphabetische Liste durch. Als Anfänger einer neuen Sprache weiss
    man nämlich schlicht nicht, welche Befehle es überhaupt z.B. im
    grafischen Bereich gibt. Daher kann man schlecht den Anfangsbuchstaben
    angeben 🙂

    Und bis zur 5er scheint es das ja auch gegeben zu haben
    Das ganze erinnert mich an das lustige Fragespiel:
    Frage: Warum hast Du mich nicht nach dem Artikel xy gefragt?
    Antwort: Weil ich nicht wusste, das es Artikel xy gibt!

    Die Online Hilfe ist genau da aber leider sehr sparsam, Beispiel
    Messagebox (kenne ich ja aus anderen Sprachen) und dort das Beispiel:

    Da kommt das raus:
    Application->NormalizeTopMosts();
    Application->MessageBox("This should be on top.", "Look", MB_OK);
    Application->RestoreTopMosts();

    Soll das eine Hilfe sein? Kaum. Es wird weder darauf eingegangen,
    wie ich Strings einsetze noch Int-Vars angeben kann usw.
    Fazit: Viel zu allgemein gehalten; die meisten Infos muss man
    sich mühsam in Foren usw. zusammensuchen.

    Daher ein Dank an dieser Stelle an alle aktiven Helferlein im Netz... 👍

    Gruss Stefan

    Mühsam ernährt sich das Eichhörnchen... 😉



  • Zum Erlernen einer neuen Programmiersprache halte ich Tutorials oder noch besser Bücher für wesentlich sinnvoller als eine alphabetische Liste.
    Wenn du in der Hilfe MessageBox eingibst kommt eigentlich eine recht ausfürliche Erläuterung (finde ich jedenfalls).



  • Ja, habe schon 2 Bücher geordert;
    die Hilfe ist dann ausreichend, wenn man die C++ Strukturen,
    Vars usw. gut kennt. Als Newbie bekomme ich nicht mal z.B.
    die { } erklärt, wann wie wo..:

    *suffix-ausdruck(<arg-ausdruck-list>)
    zusammengesetzte anweisung { anweisungs-liste }

    Bemerkungen:
    ( ) Dient zur Gliederung von Ausdrücken, zur Einfassung von Bedingungsausdrücken und zur Kennzeichnung von Funktionsaufrufen und -parametern.
    { } Dient zur Markierung von Anfang und Ende einer zusammengesetzten Anweisung.
    *

    Sorry, das ist keine Hilfe, das ist Verwirrung pur (Ein Auto würde
    vermutlich so beschrieben: Dient zur Bewegung von A nach B). Aussagekraft=0
    Kein Beispiel, keine Erklärung wann es wie sinnvoll stehen muss
    (das da oben ist doch keine Aussage). Bin aber vermutlich
    von der sehr guten Hilfe bei GB32 verwöhnt. Na egal, kämpfen
    wir uns mal durch. Sonst denkt nachher hier noch jemand, ich würde
    den Builder oder Borland schlecht machen... 😃



  • Solche Programme sind nicht für Anfänger entwickelt worden. Da wird schon vorrausgesetzt das man Erfahrung hat mit C/C++ etc.

    Wozu soll in der BCB {} oder () genau erklärt werden, wofür das ist? Sowas lernt man nciht mit einem PRogramm sondern durch Bücher.

    Wenn man solche Programme für Anfänger entwickelt, dann will ich nicht wissen wie groß die Hilfe sein soll. So ca. in der Größe von 1GB?

    Die Hilfe ist so ganz gut, mehr muß auch nicht. Da ist alles erklärt was man als Entwickler braucht und nicht als Anfänger...

    Dafür gibt's ja Bücher. Und wenn man Bücher über C/C++ gelesen hat, wirst du auch die Hilfe eher verstehen.

    Schließlich ist der BCB,VC nicht ein Programm wie MS Word, MS Excel, MS Windows. Es ist halt auf Entwickler angepasst und nicht auf Otto-Normalverbraucher und auch nicht für Leute die nicht C/C++ programieren können, dazu sollte man die Sprache C/C++ können. Dann versteht man die Hilfe.


Anmelden zum Antworten