Announcement

Collapse
No announcement yet.

Label Komponenete

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Ja. Bei den von Dir gesetzten Haltepunkten siehst Du den Wert von Temp jeweils vor dem StringReplace (die Anweisung(en) in der Zeile mit dem Breakpoint ist/sind noch nicht ausgeführt).

    Comment


    • #17
      ich hab jetzt mal hier einen Haltepunkt eingefügt
      if (Wort.SubString(i,1)==Tastendruck) //schaut ob an der Stelle i (die 1 bedeutet ein Buchstabe) der String gleich mit dem Tastendruck ist
      temp[i] = Wort[i]; //Wenn ja schreibt er diesen Buchstaben an von Wort[i] and die gleiche Stelle in temp[i]
      ist das richtig ?
      Zuletzt editiert von Mister Love; 13.04.2007, 14:48.

      Comment


      • #18
        hat da keiner mehr ne idee ?

        wäre wichtig !

        Comment


        • #19
          Was für eine Idee sollte denn einer haben (können)?
          Ob ein Haltepunkt richtig oder falsch gesetzt ist, hängt davon ab, was man an der Stelle untersuchen will. Insofern kann Dir dabei niemand helfen.
          Höchstens: Es gibt auch noch die schöne Funktion 'lokale Variablen untersuchen', dabei kannst Du in einem zusätzlichen Fenster alle Veränderungen (allerdings eben nur lokaler Variablen) verfolgen.

          Comment


          • #20
            Damit das an der Stelle mal weitergeht (oder ein Ende hat?):
            Code:
            // globale Variablen
            String ToGuess;
            int ErrCount;
            Nach Festlegen des zu eratenden Wortes (ToGuess):
            Code:
            int i;
            String TmpStr;
            TmpStr = "";
            for (i=1; i<=ToGuess.Length(); i++)
                TmpStr += " _ ";                              // Striche für alle Buchstaben, davor und
                                                                        // danach ein Leerzeichen
            Label1->Caption = TmpStr;
            ErrCount = 0;                                      // Zähler für diese Runde zurücksetzen
            Nach dem Drücken einer Taste wird folgende Routine aufgerufen (Chr ist das Zeichen in Großschrift):
            Code:
            void __fastcall Check(char Chr)
            {
            int i;
            bool Guessed;
            String ChkStr;
            char Chr;
            
            	ChkStr = StringReplace(Label1->Caption, " _ ", "_", TReplaceFlags() << rfReplaceAll);
            	Guessed = false;
            	for (i=1; i<=ToGuess.Length(); i++)
            	{
            		if (ToGuess.UpperCase()[i] == Chr)
            		{
            			ChkStr[i] = Chr;
            //			ChkStr[i] = ToGuess[i];   // alternativ: Groß-/Kleinschrift
            			Guessed = true;
            		}
            	}
            	if (!Guessed) ErrCount++;
            	Label1->Caption = StringReplace(ChkStr, "_", " _ ", TReplaceFlags() << rfReplaceAll);
            }
            Funktioniert wunderbar...

            Gruß vom Knut
            Zuletzt editiert von Knut Lohse; 15.04.2007, 15:24.

            Comment


            • #21
              yup geht danke !

              Comment


              • #22
                Freut mich.

                Comment


                • #23
                  Code:
                  void __fastcall Check(char Chr)
                  {
                  int i;
                  bool Guessed;
                  String ChkStr;
                  char Chr;
                  
                  	ChkStr = StringReplace(Label1->Caption, " _ ", "_", TReplaceFlags() << rfReplaceAll);
                  	Guessed = false;
                  	for (i=1; i<=ToGuess.Length(); i++)
                  	{
                  		if (ToGuess.UpperCase()[i] == Chr)
                  		{
                  			ChkStr[i] = Chr;
                  //			ChkStr[i] = ToGuess[i];   // alternativ: Groß-/Kleinschrift
                  			Guessed = true;
                  		}
                  	}
                  	if (!Guessed) ErrCount++;
                  	Label1->Caption = StringReplace(ChkStr, "_", " _ ", TReplaceFlags() << rfReplaceAll);
                  }
                  Nun wollte ich noch überprüfen ob das wort gleich dem label ist geht aber nicht was is das falsch?

                  Code:
                   if(Wort==lbl_text->Caption)      //überprüft ob der gegebene String(Wort) dem Ausgabe Feld ist
                                                          {
                                                               Application->MessageBoxA(String("Du hast das Wort erraten: "+Wort).c_str(),"Gewonnen!!!",MB_OK|MB_ICONEXCLAMATION);    //Wenn ja Nachricht ausgeben (sie haben das Wort erraten)
                                                               win++;
                                                        lbl_win->Caption=win;
                                                               runden++;
                                                               btn_startClick(this);                                                        //danach wieder eine neue Runde starten
                                                          }

                  Comment


                  • #24
                    Hast du eigentlich irgendwas vom dem verstanden was hier gesagt wurde??

                    Hast du überhaupt noch deine eigenen Anforderungen im Blick??

                    Warum geht das wohl nicht?? Das debuggen sollte dir die Erklärung geben....
                    Christian

                    Comment


                    • #25
                      weißt du das Problemm wenn ja sag es mir bitte !! ich kann gerade nicht schauen !

                      Comment


                      • #26
                        Noch ein Mal 'Gnade vor Recht': Wenn in meiner Routine 'Check' in ChkStr keine Underscore mehr auftreten, nachdem ersetzt worden ist, ist das Wort erraten:
                        Code:
                        if (ChkStr.AnsiPos("_") == 0) ShowMessage("Erraten!");

                        Comment


                        • #27
                          muss das vor oder hinter

                          Code:
                          lbl_text->Caption = StringReplace(temp, "_", " _ ", TReplaceFlags() << rfReplaceAll);

                          Comment


                          • #28
                            Hast du es ausprobiert??

                            Wenn nein-> warum nicht (einmal davor einmal danach -> 2 Durchläufe)

                            Und was hat das mit der Überschrift über diesen Thread zu tun?
                            Christian

                            Comment


                            • #29
                              kk das hab ich mal aber nun will ich ja nicht nur machen wenn es ChkStr gleich dem wort ist ich will ja auch noch machen wenn er über 12 fehler kommt das es dann auch wieder von neu anfäng und der Spieler eine verlorene Runde bekommt.

                              Code:
                              if(fehler==12)
                                                      {
                                                      z_foot_r();                          //       zeichnet den rechten Fuß des Hang Man 
                                                      Application->MessageBoxA(String("Das richtige Wort wäre gewesen: "+Wort ).c_str(),"Verloren",MB_OK|MB_ICONSTOP|MB_APPLMODAL);
                                                      lose++;
                                                      lbl_lose->Caption=lose;
                                                      runden++;
                                                      btn_startClick(this);                                                                                                                //ein neue Runde betätigen!
                                                      }
                              er macht wenn ich diese Ausführe keinen reset von dem Label .

                              Comment


                              • #30
                                in dem btn_startClick hab ich sogar schon

                                Code:
                                lbl_text->Caption="";
                                reingeschrieben.

                                Comment

                                Working...
                                X