如何在现有的Rtf文档中引入新的格式说明符

我正在尝试扩展使用RTF的宏解析器的功能。 (VB.NET RichTextBox的自定义重载) 解析器为RTF创建标头,并逐行输入格式代码。 这只能处理单行表达式,我希望能够解析多行语句。 为此,我创建了一个在第一个解析器之后运行并重新解析多行语句的函数。

我面临的问题是,当我尝试从RichTextBox(RichTextBox.Rtf)中读取现有文本时,它将返回先前输入的RichText的简化版本,不再包含整个标头,仅包含用过的位。

当我尝试用应识别的新格式代码替换某些行时,它将失败。

然后我尝试嵌套另一个标头,但这根本不起作用。

这是RTF,没有像以前一样进行多行解析。

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset1 MS Reference Sans Serif;}{\f1\fnil\fcharset1 MS Reference Sans Serif;}{\f2\fnil\fcharset1 MS Reference Sans Serif;}{\f3\fnil\fcharset1 MS Reference Sans Serif;}{\f4\fnil\fcharset1 MS Reference Sans Serif;}{\f5\fnil\fcharset1 MS Reference Sans Serif;}{\f6\fnil\fcharset1 MS Reference Sans Serif;}{\f7\fnil\fcharset1 MS Reference Sans Serif;}{\f8\fnil\fcharset1 MS Reference Sans Serif;}{\f9\fnil\fcharset1 MS Reference Sans Serif;}{\f10\fnil\fcharset1 MS Reference Sans Serif;}{\f11\fnil\fcharset1 MS Reference Sans Serif;}{\f12\fnil\fcharset1 MS Reference Sans Serif;}}{\colortbl ;\red255\green255\blue255;\red0\green0\blue0;\red255\green255\blue255;\red0\green0\blue255;\red255\green255\blue255;\red70\green130\blue180;\red255\green255\blue255;\red220\green20\blue60;\red255\green255\blue255;\red165\green42\blue42;\red255\green255\blue255;\red128\green0\blue0;\red255\green255\blue255;\red0\green128\blue0;\red255\green255\blue255;\red0\green0\blue0;\red255\green255\blue255;\red184\green134\blue11;\red255\green255\blue255;\red47\green79\blue79;\red255\green255\blue255;\red255\green0\blue0;\red255\green255\blue255;\red138\green43\blue226;\red255\green255\blue255;\red147\green112\blue219;}\viewkind4\uc1\pard\lang1031\fs16 \f0\cb1\cf2\b\i0\ulnone  
f6\cb13\cf14\b\i0\ulnone ! MultiMess7 macro header. Please fill in information and uncomment lines:\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone !-------------------------------------------------------------------------------------\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! >>> Please set user and technology <<< \f0\cb1\cf2\b\i0\ulnone \par
\f1\cb3\cf4\b\i0\ulnone SET\f0\cb1\cf2\b\i0\ulnone  \f9\cb19\cf20\b\i0\ulnone user\f0\cb1\cf2\b\i0\ulnone =\par
\f1\cb3\cf4\b\i0\ulnone SET\f0\cb1\cf2\b\i0\ulnone  \f9\cb19\cf20\b\i0\ulnone technology\f0\cb1\cf2\b\i0\ulnone =\par
\f6\cb13\cf14\b\i0\ulnone !-------------------------------------------------------------------------------------\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! SET lot=@LOT\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! SET wafer=@WAFER\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! SET slot=@SLOT\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! SET diex=@DIEX\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! SET diey=@DIEY\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! SET xy=DIE_x$diex&y$diey\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! SET temp=@TEMP\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! SET path=G:\\04_Auftraege\\\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! SET file=$technology&_$lot&_$wafer&_$xy&\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone !---------------------------------------------------------------\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! PICTURE File=$path&\\$file&\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone ! SAVE_DATA File=$path&\\$file&.DAT\f0\cb1\cf2\b\i0\ulnone \par
\f6\cb13\cf14\b\i0\ulnone !---------------------------------------------------------------\f0\cb1\cf2\b\i0\ulnone \par
\par
}

,当分配给RichTextBox.Rtf时会变成:

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil MS Reference Sans Serif;}}
{\colortbl ;\red0\green128\blue0;\red0\green0\blue0;\red0\green0\blue255;\red47\green79\blue79;}
\viewkind4\uc1\pard\cf1\lang1031\b\f0\fs16 ! MultiMess7 macro header. Please fill in information and uncomment lines:\cf2\par
\cf1 !-------------------------------------------------------------------------------------\cf2\par
\cf1 ! >>> Please set user and technology <<< \cf2\par
\cf3 SET\cf2  \cf4 user\cf2 =\par
\cf3 SET\cf2  \cf4 technology\cf2 =\par
\cf1 !-------------------------------------------------------------------------------------\cf2\par
\cf1 ! SET lot=@LOT\cf2\par
\cf1 ! SET wafer=@WAFER\cf2\par
\cf1 ! SET slot=@SLOT\cf2\par
\cf1 ! SET diex=@DIEX\cf2\par
\cf1 ! SET diey=@DIEY\cf2\par
\cf1 ! SET xy=DIE_x$diex&y$diey\cf2\par
\cf1 ! SET temp=@TEMP\cf2\par
\cf1 ! SET path=G:\\04_Auftraege\\\cf2\par
\cf1 ! SET file=$technology&_$lot&_$wafer&_$xy&\cf2\par
\cf1 !---------------------------------------------------------------\cf2\par
\cf1 ! PICTURE File=$path&\\$file&\cf2\par
\cf1 ! SAVE_DATA File=$path&\\$file&.DAT\cf2\par
\cf1 !---------------------------------------------------------------\cf2\par
\par
}

然后我尝试添加

\f3\cb7\cf8\b\i0\ulnone $U2\f12\cb25\cf26\b\i0\ulnone  = \f12\cb25\cf26\b\i0\ulnone math.log(\f5\cb11\cf12\b\i0\ulnone §U_SMU1\f12\cb25\cf26\b\i0\ulnone *\f8\cb17\cf18\b\i0\ulnone 2\f12\cb25\cf26\b\i0\ulnone )\par
\f3\cb7\cf8\b\i0\ulnone $U3\f12\cb25\cf26\b\i0\ulnone  = \f12\cb25\cf26\b\i0\ulnone math.sin(\f5\cb11\cf12\b\i0\ulnone §U_SMU1\f12\cb25\cf26\b\i0\ulnone \f12\cb25\cf26\b\i0\ulnone )\par
\f12\cb25\cf26\b\i0\ulnone var = \f12\cb25\cf26\b\i0\ulnone math.cos(\f3\cb7\cf8\b\i0\ulnone $U3\f12\cb25\cf26\b\i0\ulnone \f12\cb25\cf26\b\i0\ulnone )\par
\f12\cb25\cf26\b\i0\ulnone hello(\f9\cb19\cf20\b\i0\ulnone 'hi' \f12\cb25\cf26\b\i0\ulnone \f12\cb25\cf26\b\i0\ulnone )\par
\f12\cb25\cf26\b\i0\ulnone import \f12\cb25\cf26\b\i0\ulnone time\par
\par
}

它显示为黑色文本,这是默认设置。

是否可以在不将RTF外部存储的情况下追加新的格式说明符?旧的解析器一次只能使用摘要,而我的新函数需要整个文本,然后使用RichTextBox.Text。

duke3032 回答:如何在现有的Rtf文档中引入新的格式说明符

我解决了。您可以通过RichTextBox的SelectedRtf属性将带有新标题的其他富文本插入到现有标题中。

header.CamelHttpQuery
本文链接:https://www.f2er.com/2777327.html

大家都在问