Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: RichEdit , RTF und Großbuchstaben 2

  Alt 23. Feb 2016, 17:58
den Sring Apfel aus dem RTF herauszubekommen ist nicht das Problem.

Das Problem liegt an der Formatierung innerhalb des RTF's. Obwohl es dort großgeschrieben ist, muss ich (auf Grund der Vorgabe) den String anhand der Schreibweise verschieden bewerten. Der kann fett, kursiv etc - und eben Großbuchstaben sein (auch Groß kursiv fett, was dann eine andere interne Bedeutung hat)
Könnte es sein, daß Du da etwas verwechselst?
In einer RTF-Datei liegen die Formatinformationen und der angezeigte Text hintereinander (stream).
z.B.
Code:
{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid1331219 Apfel}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid3025572 
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid1331219 Apfel
\par Apfel
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\insrsid1331219\charrsid1331219 Apfel
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid1331219 Apfelmus
\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\i\insrsid1331219\charrsid1331219 Apfel
\par }
das kannst Du Lesen und die entsprechenden Attribute für jedes Wort setzen.
oder aber Du arbeitest mit einem TRichEdit und nutzt SelText/SelLength/selstart und SelAttribute den Text und die zugehörigen Attribute zu bekommen.
Um SelText zu positionieren könnte man z.b
Delphi-Quellcode:
while letzteposition<length(text) do
  lp1:=Posex(' ',meintext,letztePosition)
  lp2:=Posex(' ',meintext,letztePosition)
  selstart:=p1+1;
  sellength:=p2-1-p1;
  ..machwas
  letzteposition:=p2;
end;
nutzen. (Ist nicht getestet, nur als Anregung!)

Mit den Informationen fütterst du Dann eine Wortliste, die auch die Attribute enthält. Ob das eine Stringliste mit Objects oder eine Objectlist mit Records oder.. ist, ist zunächst einmal egal.

Gruß
K-H
Nachtrag:

Aus Sicht der Datenverwaltung sind diese Eigenschaften auch eher unnütz hinderlich)
Wer ist auch so ... Dateneigenschaften am Aussehen fest zu machen.

Sind die Jedis nicht etwas weiter gekommen?
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (23. Feb 2016 um 18:03 Uhr)
  Mit Zitat antworten Zitat