(Borland C++...) For-schleife nach Erfolg verlassen



  • Hi

    nehmen wir an wir haben diese forschleife

    for(int i=1; i<=10; i++)
        {
         if(Test[i] == 7 )
           {
            Application->MessageBox("Hat geklappt", "Info", MB_OK);
           }
        }
    

    Immer wenn der Erfolg bei mir eintritt, also Test[7]==7 kommt die Messagebox aber leider nicht nur einmal, sondern andauernd. Wie kann ich das verhinden? break funktioniert nicht 😕



  • Andauernd? Die MessageBox da sollte immer dann kommen, wenn Test[i]==7 ist. Nicht mehr oder weniger.

    Ansonsten kannst du mit break; rausspringen. Oder besser, packs in eine Funktion und mach return.



  • entweder

    for(int i=1; i<=10; i++)
        {
         if(Test[i] == 7 )
           {
            Application->MessageBox("Hat geklappt", "Info", MB_OK);
            break;
           }
        }
    

    oder

    int i=0;
    do
       {
          i++;
          if(Test[i] == 7 )
          {
             Application->MessageBox("Hat geklappt", "Info", MB_OK);
          }
       }
    while(i<10&&Test[i]!=7);
    


  • Ok habs in eine Funktion gepackt.
    Andere Frage:

    Wie kann ich in die Messagebox ein Integerwert ausgeben?

    Application->MessageBox("Haus Nr"+IntToStr(Nummer)+" ist bewohnt", "Info", MB_OK);

    Geht nicht?



  • Montier Dir Deinen Mesage- String vorher in ner Var zusammen!

    PS: sieht nach BCB aus ???
    [ Dann: Application->MessageBox(AnsiString("Haus Nr")+IntToStr(Nummer)+" ist bewohnt", "Info", MB_OK);//probieren]



  • Original erstellt von DerAltenburger:
    **Montier Dir Deinen Mesage- String vorher in ner Var zusammen!

    PS: sieht nach BCB aus ???
    [ Dann: Application->MessageBox(AnsiString("Haus Nr")+IntToStr(Nummer)+" ist bewohnt", "Info", MB_OK);//probieren]**

    Da kommt das gleiche heraus. er hatte schon recht mit Application->MessageBox("Haus Nr. "+IntToStr(Nummer)+" ist bewohnt","Info", MB_OK);



  • Original erstellt von Spieleprogrammierer:
    **
    Da kommt das gleiche heraus. er hatte schon recht mit Application->MessageBox("Haus Nr. "+IntToStr(Nummer)+" ist bewohnt","Info", MB_OK);**

    Ok!
    Dann:

    Application->MessageBox(("Haus Nr")+IntToStr(Nummer)+" ist bewohnt").c_str(), "Info", MB_OK);

    So geht's beim BCB 4



  • Original erstellt von DerAltenburger:
    **Ok!
    Dann:

    Application->MessageBox(("Haus Nr")+IntToStr(Nummer)+" ist bewohnt").c_str(), "Info", MB_OK);

    So geht's beim BCB 4**

    lol, da kommt ebenfallsdas gleiche heraus 😉



  • "Haus Nr." dürfte kein operator + auf Ansistring haben. Daher wäre
    AnsiString("Haus Nummer") + IntToStr(x) angebracht.



  • Original erstellt von Knuddlbaer:
    "Haus Nr." dürfte kein operator + auf Ansistring haben. Daher wäre
    AnsiString("Haus Nummer") + IntToStr(x) angebracht.

    Wieso nicht?



  • 1. kein standard
    2. was liefert IntToString zurueck? wenn es char* ist, wie soll dann der compiler wissen, dass du gern _beide_ operanden gecastet haben willst? Wenn es AnsiString ist, ist dessen + einfach nur schlecht implementiert.



  • VCL Pur.

    @<Gast> hör auf Altenburgers Rat und bastel dir den String in eine Extravariabel zusammen. Anschliessend schaust du mal in die VCL-FAQ zum Thema AnsiString oder schaust dir einfach die Methoden von AnsiString etwas exakter an.

    @Spieleprogrammierer Klar kommt das Selbe raus, egal ob da nun eine Variable dazwischen geknallt wird oder nicht. Vielleicht solltest du dir mal den Funktionsprototypen von TApplication::MessageBox an, dann sollte dir ein Lichtchen aufgehen.

    Bei Altenburgers zweiten Beispiel hats eine KLammer zuviel drin. Da kommt nicht das Selbe raus sondern eine ganz andere Compiler-Fehlermeldung, Spieleprogrammierer. Hätte sich Altenburger nicht verschrieben, wärs korrekt, wenn auch Stilitisch unter jeder Sau.

    -junix



  • VCL Pur.

    Na dann. Auf ins Land der Borländer 🙂


Anmelden zum Antworten