Hallo, zusammen!
Das ist eigentlich ein String
"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1031{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\fdecor\\fprq2\\fcharset0 Broadway;}{\\f2\\fswiss\\fprq2\\fcharset0 Berlin Sans FB Demi;}{\\f3\\fscript\\fprq2\\fcharset0 Brush Script MT;}{\\f4\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\lang1033\\b\\i\\f0\\fs40 Test Rtf\\par\r\n\\b0\\i0\\f1\\fs48 Test Rtf \\f2 Test\\f1 \\f3 Rtf\\lang1031\\f4\\fs17\\par\r\n}\r\n"
, das Eigenschaft Rtf von Komponente RichTextBox initialisiert. Ich selektiere ein Wort, das mit 18 Positionen 18 fängt an. Und zwar ist das Wort „Test“. Dann die Eigenschaft SelectionFont das Wert null hat.
Obwohl die Schriftart für das Wort im rtf-Linie ist vorhanden "Berlin Sans FB Demi"
Wie kann ich das Problem zu lösen?
Danke im voraus
Hallo,
laut RichTextBox.SelectionFont-Eigenschaft: Wenn für die aktuelle Textauswahl mehr als eine Schriftart angegeben ist, ist diese Eigenschaft null.
Und das ist auch so bei dir der Fall. Zwischen dem Wort Test und dem Schriftformat Berlin Sans FB Demi stehen noch Brush Script MT und Microsoft Sans Serif!
Grüße
**:::
Erst bedanke mich für Antwort.
Wenn für die aktuelle Textauswahl mehr als eine Schriftart angegeben ist, ist diese Eigenschaft null
Es ist mir klar. Aber wenn ich sogar EINE BUCHSTABE aus Wort "Test" mit Methode Select wähle - bekomme ich immer SelectionFont null.
Zwischen dem Wort Test und dem Schriftformat Berlin Sans FB Demi stehen noch Brush Script MT und Microsoft Sans Serif
Können Sie mir besser erklären, was Sie hier genau meinten
Nochmal Danke
Zum einen duzen wir generell in allen deutschen Foren, die unter dem Motto "Hilfe zur Selbsthilfe" agieren, unabhängig davon welchen Alter man hat. Zum anderen du hast gepostet:
"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1031{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\fdecor\\fprq2\\fcharset0 Broadway;}{\\f2\\fswiss\\fprq2\\fcharset0 Berlin Sans FB Demi;}{\\f3\\fscript\\fprq2\\fcharset0 Brush Script MT;}{\\f4\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\lang1033\\b\\i\\f0\\fs40 Test Rtf\\par\r\n\\b0\\i0\\f1\\fs48 Test Rtf \\f2 Test\\f1 \\f3 Rtf\\lang1031\\f4\\fs17\\par\r\n}\r\n"
schau also genau hin, dann siehst du auch dass
Zwischen dem Wort Test und dem Schriftformat Berlin Sans FB Demi stehen noch Brush Script MT und Microsoft Sans Serif
die Lösung besteht darin, dass du Bereichsweise formatieren muss, wenn du solche Info holen möchtest, d.h. zB:
falsch: (symbolisch)
Berlin Sans FB Demi
{
Brush Script MT
{
Test
}
}
richtig
Berlin Sans FB Demi
{
Test
}
Brush Script MT
{
Foo
}
**:::
Zwischen dem Wort Test und dem Schriftformat Berlin Sans FB Demi stehen noch Brush Script MT und Microsoft Sans Serif
Leider verstehe ich das nicht
\\f2 Test\\f1 \\f3 Rtf
Ich verstehe so - Für Test ist zuständig Schriftart mit Bezeichnung f2, für Leerezeichen - f1 und für Rtf - f3
Oder verstehe ich etwas falsch?
siehe hier: Rich Text Format und hier Font Table
**:::
Also Font Tab Sagt
Unique \fN control words define each font available in the document, and are used to reference that font throughout the document.
Wie ich gesagt habe.
\\f2 Test\\f1 \\f3 Rtf
Ich verstehe so - Für Test ist zuständig Schriftart mit Bezeichnung f2, für Leerezeichen - f1 und für Rtf - f3
f2 ist für
{\\f2\\fswiss\\fprq2\\fcharset0 Berlin Sans FB Demi;}
Ich hab probiert statt Berlin Sans FB Demi andere Schriftart benutzen z.B. so
{\\f2\\fswiss\\fprq2\\fcharset0 Bauhaus 93;}
Und in diesem Fall Schriftart wurde erkannt.
Kannst Du das erklären?
Nein, leider kann ich es nicht erklären, da so tief in RTF kenne ich mich auch nicht aus, aber IMHO sollst du mit geschweifte Klammer { und } im Textfluß arbeiten, damit die Begrenzung eindeutig ist.
**:::
IMHO sollst du mit geschweifte Klammer { und } im Textfluß arbeiten, damit die Begrenzung eindeutig ist.
Leider ich erstelle kein rft, sondern analysiere eingegangene rtf-strings.
Mal ne Alternative:
wäre es nicht eine Option das RTF in ein HTML umzuwandeln und dann entsprechend zu parsen?
das dürfte denke ich mal einfacher sein.
Du willst doch nur wissen welche Schriftart für welchen Text verwendet wird oder?
MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden!
*"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht."
*"Ignorance simplifies ANY problem."
*"Stoppt die Piraterie der Musikindustrie"
Schau Dir mal dieses Projekt an: http://sourceforge.net/projects/rtfdomparser/
Da wird der ganze RTF-Text schon zerlegt. Das könnte Dir die passenden Ansätze liefern.
Du willst doch nur wissen welche Schriftart für welchen Text verwendet wird oder?
Nicht nur...
Ich benutze follgende Eigenschäften vom RichTextBox
SelectedText
SelectionFont
SelectionColor
Width
Height
bzw. Methode GetPositionFromCharIndex
Schau Dir mal dieses Projekt an:
>
Sieht gut aus, aber ich kann es nicht erstellen, da ich drei mal eine Fehlermeldung kriege. "Zu viele Zeichen im Zeichenliteral"
Fehler erscheint in der Zeilen 165, 171 in der Datei RTFNodeGroup.cs und in der Zeile 85 in der Datei Parser.cs
///Datei RTFNodeGroup.cs
if( node.Keyword == "emdash")
{
AddString( myStr , buffer );
myStr.Append( '¡ª'); ///Fehler
continue ;
}
if( node.Keyword == "" )
{
AddString( myStr , buffer );
myStr.Append( '¨C' ); ///Fehler
continue ;
}
////Datei Parser.cs
if ( token.Key == "emdash")
{
CheckBuffer();
myStr.Append('¡ª'); ///Fehler
return true;
}
Ich verstehe, dass so es nicht umsonst gemacht wurde. Aber wie kann ich das ohne Fehler erstellen?
Diese Fehlermeldung fällt unter die Grundlagen, die wir vorraussetzen.
[Hinweis] Wie poste ich richtig? 1.1.1
Der Fehler wird die Zeile if ( token.Key == "emdash")
sein. Stichwort: Datentypen.
Die Forensuche bringt Dich im 4. Treffer auf [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)
Bitte zeig in Zukunft ein wenig mehr Eigeninitative und lass nich uns Deinen Job machen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
die drei Fehler erscheinen mir eher als Encoding-Problem der Source-Code-Datei (ASCII <-> UTF8 o.ä).