Autor Beitrag
Default112
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 76

Win XP
D6 Prof
BeitragVerfasst: Di 26.10.04 23:01 
Ok, folgendes Problem: Ich habe einen String, in dem auch Steuerzeichen enthalten sind. Diese sagen, ob nun Fettgedruckt oder Unterstrichen oder normal weitergeschrieben wird. Ich fürchte, ich habe mich in einen umständlichen Lösungsweg verrannt. Folgendes: Mein String sieht irgendwie so aus:

ausblenden Quelltext
1:
2:
Das ist mein Teststring, ab #hier wird fett und ab #hier wird unterstrichen
                 chr(15)---^            chr(31)---^


Ich möchte jetzt, dass der Text so in meinen RichEdit steht:

Das ist mein Teststring, ab hier wird fett und ab hier wird unterstrichen

Zur Zeit stehe ich da:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
FOR i := 1 TO LENGTH(memoline) DO
      BEGIN
        IF (ORD(memoline[i]) > 31)  THEN
        BEGIN
          Richedit1.Text := Richedit1.Text + memoline[i];
          Richedit1.SelLength := 1;
          Richedit1.SelStart := Length(Richedit1.Text)-1;
          Richedit1.SelAttributes.Style := currentfontstyles;
        END;
        IF ORD(memoline[i]) = 31 THEN currentfontstyles := [fsUnderline];
        IF ORD(memoline[i]) = 15 THEN currentfontstyles := [fsBold];
      END;

memoline ist der String und currentfontstyles ist der momentane Font.Style

Wäre echt toll, wenn man mir helfen könnte :)

Gruss
Def
nike
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win 2K, Win XP
D5 Ent.
BeitragVerfasst: Mo 01.11.04 10:29 
Hallo!

Ist schon ein bischen her, daß der Thread geöffnet wurde, wahrscheinlich hast Du schon selber eine Lösung entwickelt.

In deiner Lösung besteht keine Möglichkeit nach einer besonderen Formatierung später auf "normal" (zurück) umzustellen, ggfs. bold und underline zusammen zuhaben (vielleicht so gewollt?).

Also würde ich ähnlich wie bei html Anfangs- und End-Tags nehmen (Kann ja ruhig ein Byte lang sein). Bei dem Style kannst Du den einen Endtag als Menge abziehen.
Style := Style - [fsBold];

Ansonsten kann man Deinen Ansatz schon gut verwenden, nur halt um die Endzeichen ergänzen.

Wo genau besteht denn Dein Problem? Zeichenweise auslesen ist schon OK, kommt natürlich auf die Länge der memoline an. Alternativ könnte man mit Pos() alle Start- und End-Tags ermitteln und mit Copy die richtigen Zeichen in einem Schwung rüberkopieren. Das bedeutet aber etwas mehr Codieraufwand.

Gruß
Nike
Default112 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 76

Win XP
D6 Prof
BeitragVerfasst: Mo 01.11.04 17:58 
Mein konkretes Problem ist, dass ich
A) Den String nicht verändern kann und auch um keine Steuerzeichen ergänzen kann.
B) Bei meinem Ansatz schreibt er alles ohne Bold bzw. UNderline, gleich wieviele Steuerzeichen ankommen.

Im Grunde geht es mir erstmal nur darum, den letzten Buchstaben in einer bestimmten Formatierung hinzuzufügen. Tuts aber im Moment nicht, und ich verzweifel langsam.

edit: Rechtschreibfehler omfg.... und dann sooo viele ^^
nike
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win 2K, Win XP
D5 Ent.
BeitragVerfasst: Mo 01.11.04 19:41 
Hallo!

Also habe eben ein Richedit und ein TEdit auf eine Form gepappt. Durch click auf einen Button wird folgendes ausgelöst:

ausblenden Delphi-Quelltext
1:
2:
  RichEdit1.SelAttributes.Style := [fsUnderline];
  RichEdit1.SelText := Edit1.Text;


Formatierung wird übernommen für den nächsten eingefügten Text (Nicht für das gesamte Richedit) .
Also erst Formatierung festlegen (Kann man z.B. über Toggle-Buttons machen). Steuerzeichen selber direkt eingeben geht glaube ich nicht so ohne weiteres. Alternativ zu Toggle-Buttons kannst du eigene Tags verwenden, wie <b> in html z.B., die Du parst, und entspr. die Formatierung machst. Die steuer-Tags natürlich nicht ins Richedit einfügen.

Gruß
Nike
Default112 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 76

Win XP
D6 Prof
BeitragVerfasst: Di 02.11.04 17:43 
ausblenden Delphi-Quelltext
1:
RichEdit1.SelText := Edit1.Text;					


DAS hab ich gesucht, danke ^^ Frage geklärt :)