Announcement

Collapse
No announcement yet.

zeichen eines richedit gegen ein anderes austauschen

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

  • zeichen eines richedit gegen ein anderes austauschen

    hallo,

    ich möchte in ienem richedit-feld die eingegeben zeichen gegen ein anderes austauschen.

    z.b. alle "a" sollen gegen "5" getauscht werden, alle "z" sollen gegen "b" getauscht werden, usw. .

    ich wollte dies mit dem dezialwert des jeweiligen zeichens lösen, allerdings schaffe ich es nicht so ganz, in dem richedit zeichen für zeichen weiterzugehen.

    ich danke schonmal im vorraus für eure hilfe.

  • #2
    Hallo,<br>

    Zeichen ändern:<br>
    1. mit RichEdit.SelStart = 6 kannst du den Cursor positionieren<br>
    2. mit RichEdit.SelLength = 1 kannst du ein Zeichen markieren<br>
    3. mit RichEdit.Perform(WM_Char,Byte('A'),0) markiertes Zeichen<br>
    ersetzen<br>

    An der Stelle 7 (Stelle 1 wird mit 0 identifiziert) wird das<br>
    vorhandene Zeichen durch ein 'A' ersetzt.<br>
    <br>
    Ich hoffe es löst dein Problem.<br>
    <br>
    Mfg. Hans<br&gt

    Comment


    • #3
      ich meinte das eigendlich ungefär so (hab ich aus einem anderen forum "geklaut"):<br>

      for i:=0 to richedit1.lines.count do<br>
      begin<br>
      a:=ord(richedit1.lines[i]); //ordinaler wert von zeichen an position i<br>
      b:=ord('c'); //ordinaler wert von zeichen "c"<br>
      c:=a+b; //beide werte addiert<br>
      edit1.text:=inttostr(c); //und in einem editfeld ausgegeben<br>
      end;<br>

      jetzt liegt mein prob darin, den richtigen variablen-typ für a zu finden (stand nicht da). ich hab schon (fast) alle typen durchprobiert, aber keiner hat funktioniert. es heist immer inkompatible typen

      Comment


      • #4
        Vorsicht bei For (For i := 0 to richedit1.lines.count -1 do)<br>

        Mit 'Richedit1.Lines[I]' versuchst du eine ganze Zeile der <br>
        Funktion Ord() zu übergeben nicht nur ein Zeichen.<br>

        Wenn die Eigenschaft Richedit1.PlainText = False gesetzt ist<br>
        sollte man nicht auf diese weise auf den Text zugreifen, da in den<br>
        Lines auch die Steuerzeichen (Fettdruck usw) enthalten sind.<br>

        Falls du sie doch durchsuchen möchtest musst du anders vorgehen<br>
        Beispiel:<br>
        var<br>
        S : String;<br>
        I,I1 : Integer;<br>
        begin<br>
        Try<br>
        Richedit1.Lines.BeginUpdate; //Bildschirmaktualisierung AUS<br>
        For I := 0 To Richedit1.Lines.Count - 1 do // Zeilen-Schleife<br>
        begin<br>
        S := Richedit1.Lines[I]; //Zeile in String bringen<br>
        For I1 := 1 To Length(S) do //Dursuchen Zeile nach Zeichen<br>
        begin<br>
        case Byte(S[I1]) of<br>
        Byte('A') : S[I1] := '1'; //A in 1 umwandeln<br>
        Byte('B') : S[I1] := '2'; //B in 2 umwandeln<br>
        Byte('C') : S[I1] := '3'; //C in 3 umwandeln<br>
        end;<br>
        end;<br>
        Richedit1.Lines[I] := S; //Veränderte Zeile in RichE. bringen<br>
        end;<br>
        Finally<br>
        Richedit1.Lines.EndUpdate; //Bildschirmaktualisierung EIN<br>
        end; <br>
        end;<br&gt

        Comment

        Working...
        X