Announcement

Collapse
No announcement yet.

String an einer bestimmten Position überschreiben

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

  • String an einer bestimmten Position überschreiben

    Hi,

    Ich hab mal ne Frage ich mach zurzeit HangMan mit dem Builder jedoch nervt mich gerade ein Problem.

    Per Tastendruck(z.B. habe ich ein A) durchsuche ich nun einen String um zu schauen wo dieser Buchstabe in dem angegebenen String steht.

    Dies prüfe ich mit AnsiPos.

    Als Anzeige für das zu erratene Wort habe ich ein Label das aus lauter Unterstrichen besteht eben so lang wie das Wort lang ist (z.B. ______).

    So nun will ich meinen richtig erratenen Buchstaben an der richtigen Stelle einfügen (ich hab ja die Stelle und den Buchstaben).

    Ich hab mir alles schon angeschaut, gegooglt alles ich find aber nichts.

    Es gibt ja Funktionen die was einsetzen Insert(String,Int) jedoch is das für mich unwichtig weil wenn ich nun was einfüge schiebt das ja die Unterstriche ("__") mit und das will ich ja nicht.

    Bei einer anderen Funktion StringReplace(const AnsiString Original, const AnsiString LookFor, const AnsiString ReplaceWith, TReplaceFlags FlagToUse)
    da kann ich genau in angeben welchen Buchstaben ich suche und welchen ich für ihn ersetzen will jedoch kann ich nicht die genaue position angeben, und wenn ich sage nimm diesen Buchstaben und ersetze ihn durch einen anderen kann ich das nicht machen weil da nur Unterstriche ("__") stehen.

    Bitte helft mir was kann ich da noch machen Codebeispiele wären hilfreich !!



    danke im voraus !!

  • #2
    String test="abcdefgh";
    test[3]='X';
    Christian

    Comment


    • #3
      thx my Friend !!!


      am 5:33 so früh !! wow


      aber nochma danke !!!

      vllt kann mir noch einer sagen wie ich Zufallszahlen (ohne doppelte) erzeugen kann.

      Normale Zufallszahlen gingen schon aber ohne doppelte bekomme ich einfach nicht hin.

      //-------------------------------------------------------------------------------------------------

      Also ich hab eine Memo Komponente mit einer variablen Anzahl von Zeilen (ich lade eine Datei per OpenDialog rein) so und nun will ich ganz zufällig eine Zeile in einen String schreiben (String temp=Memo1->Lines->Strings[---zufall---]).
      So wie bekomm ich da Zufallszahlen ohne doppelte.

      Auch hier wäre Codebeispiel nicht schlecht.

      Comment


      • #4
        Du hast keine andere Wahl, als die die schon gezogenen Zahlen zu merken

        http://www.marquardtnet.info/cecke/k...querandom.html
        Christian

        Comment


        • #5
          geht das nicht einfacher?

          aber danke für deine schnelle Antwort.

          Comment


          • #6
            geht das nicht einfacher?
            Nein geht nicht einfacher
            Christian

            Comment


            • #7
              srand(time(0));

              for(i=0; i<=anz; i++) // ziehe nacheinander 52 Zahlen
              {
              do // wiederhole die Ziehung, bis die neue Zahl
              { // nicht mit einer der vorigen identisch ist.
              Zahlen[i] = rand() %(anz);
              neueZahl = true; // positive Grundeinstellung
              for (j=0; j<i; j++)
              { // durchlaufe alle bisher gezogenen Zahlen
              if (Zahlen[j]==Zahlen[i])
              { // Hier wurde ein Doppelter entdeckt
              neueZahl = false;
              }
              }
              } while (!neueZahl);
              }

              was ist daran falsch und wo soll ich das nun einfügen mit dem ich eine Zeile herausziehe (Memo1->Lines->Strings[?])?

              Comment


              • #8
                Das "voreilige" aufnehmen der per Zufall gezogenen Zahl in das Array der schon mal gezogenen Zahlen ist falsch.

                Es muss geprüft werden,

                - ist die Zahl schon mal gezogen worden

                Wenn nein -> Aufnahme in das Array (nun ist sie ja gezogen worden)
                Wenn ja -> Merker setzen und neue Runde

                (Memo1->Lines->Strings[?])?
                Du muss eine Funktion schreiben, die die einen Treffer zurückgibt. Diese Funktion wird immer dann aufgerufen, wenn du eine neue Zahl brauchst. Das Array mit den gezogenen Zahlen lebt genau für eine Spielrunde. Dann wird es gelöscht.

                Schau in den Quelltext der Komponente, wenn du sie nicht nutzen willst
                Christian

                Comment


                • #9
                  was ein f*** ich bekomme schon jetzt seit längerem eine Fehlermeldung !!

                  ich habe in einem Formular in private:

                  TButton *btn[25];

                  und dann will ich diese Zeiger jeweils einem Button zuweisen !! also z.B.

                  btn[0]=btn_a // btn[0] soll den Inhalt (oder was auch immer) von "Knopf a"
                  bekommen.

                  So diese Anweisungen (btn[0-25]=btn_a-z) hab ich in FormCreate reingeschrieben warum geht das dann nicht (Fehlermeldung). Ich habe es auch schon in den Konstruktor geschrieben usw. funzt net !! was hab ich falsch gemacht ?

                  Comment


                  • #10
                    Ein Thread mit einem Thema. Dies ist hier kein Sammelthread
                    -----------------------------------------------------------------------------
                    Des Weiteren ist "Geht nicht" keine Fehlermeldung. Da keiner deine Anwendung kennt, kann man dann auch nur schlecht raten

                    So kann man nur vermuten, das btn_a-z als Objekt zu diesem Zeitpunkt noch nicht existiert.
                    Christian

                    Comment


                    • #11
                      vllt hilft dir das hier was

                      Comment


                      • #12
                        Und was sagt das Debugging?? Welche Inhalte sind dort?
                        Christian

                        Comment


                        • #13
                          das hier unterschreicht er mir !!!
                          /* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }

                          Comment


                          • #14
                            Ich sprach vom debuggen:

                            Lass die Anwendung Schritt für Schritt laufen und schaue was passiert
                            Christian

                            Comment


                            • #15
                              das geile is ja das , dass vorher ging mit dem gleichen Schritt!!

                              ich habe mal zum Spass einfach ein neues Projekt aufgemacht und
                              das gleiche eingeben !!

                              GING !!! komisch

                              Comment

                              Working...
                              X