Beispiel 2 - Einfache Kontur
Im Auslieferungszustand gibt es drei Beispieldatensätze um die Funktionalität verständlich zu machen.
Die Sektion für eine oder mehrerer einfacher Konturen lautet "Contour example protocol".
Folgend der Dateiinhalt der Sektion:
<Format ID="CONTOUR_PROTOCOL_EXAMPLE" Caption="Contour example protocol" RegEx="(?U)Cont1_P1X(\d+)\x5c\Cont1_P1Y(\d+)\x5c\Cont1_P2X(\d+)\x5c\Cont1_P2Y(\d+)\x5c\Cont1_P3X(\d+)\x5c\Cont1_P3Y(\d+)\x5c\Cont1_P4X(\d+)\x5c\Cont1_P4Y(\d+)\x5c\Cont1_P5X(\d+)\x5c\Cont1_P5Y(\d+)\x5c\Cont1_P6X(\d+)\x5c\Cont1_P6Y(\d+)\x5c\Cont1_P7X(\d+)\x5c\Cont1_P7Y(\d+)\x5c\Cont1_P8X(\d+)\x5c\Cont1_P8Y(\d+)\x5c\Cont1_Col([\da-fA-F]+)\x5c\Cont2_P1X(\d+)\x5c\Cont2_P1Y(\d+)\x5c\Cont2_P2X(\d+)\x5c\Cont2_P2Y(\d+)\x5c\Cont2_P3X(\d+)\x5c\Cont2_P3Y(\d+)\x5c\Cont2_P4X(\d+)\x5c\Cont2_P4Y(\d+)\x5c\Cont2_P5X(\d+)\x5c\Cont2_P5Y(\d+)\x5c\Cont2_P6X(\d+)\x5c\Cont2_P6Y(\d+)\x5c\Cont2_P7X(\d+)\x5c\Cont2_P7Y(\d+)\x5c\Cont2_P8X(\d+)\x5c\Cont2_P8Y(\d+)\x5c\Cont2_Col([\da-fA-F]+)\x3b">
<Var Match="1" Name="Cont1_P1X" />
<Var Match="2" Name="Cont1_P1Y" />
<Var Match="3" Name="Cont1_P2X" />
<Var Match="4" Name="Cont1_P2Y" />
<Var Match="5" Name="Cont1_P3X" />
<Var Match="6" Name="Cont1_P3Y" />
<Var Match="7" Name="Cont1_P4X" />
<Var Match="8" Name="Cont1_P4Y" />
<Var Match="9" Name="Cont1_P5X" />
<Var Match="10" Name="Cont1_P5Y" />
<Var Match="11" Name="Cont1_P6X" />
<Var Match="12" Name="Cont1_P6Y" />
<Var Match="13" Name="Cont1_P7X" />
<Var Match="14" Name="Cont1_P7Y" />
<Var Match="15" Name="Cont1_P8X" />
<Var Match="16" Name="Cont1_P8Y" />
<Var Match="17" Name="Cont1_Col" />
<Var Match="18" Name="Cont2_P1X" />
<Var Match="19" Name="Cont2_P1Y" />
<Var Match="20" Name="Cont2_P2X" />
<Var Match="21" Name="Cont2_P2Y" />
<Var Match="22" Name="Cont2_P3X" />
<Var Match="23" Name="Cont2_P3Y" />
<Var Match="24" Name="Cont2_P4X" />
<Var Match="25" Name="Cont2_P4Y" />
<Var Match="26" Name="Cont2_P5X" />
<Var Match="27" Name="Cont2_P5Y" />
<Var Match="28" Name="Cont2_P6X" />
<Var Match="29" Name="Cont2_P6Y" />
<Var Match="30" Name="Cont2_P7X" />
<Var Match="31" Name="Cont2_P7Y" />
<Var Match="32" Name="Cont2_P8X" />
<Var Match="33" Name="Cont2_P8Y" />
<Var Match="34" Name="Cont2_Col" />
<TestData>Cont1_P1X0\Cont1_P1Y100\Cont1_P2X350\Cont1_P2Y1000\Cont1_P3X700\Cont1_P3Y100\Cont1_P4X1050\Cont1_P4Y1000\Cont1_P5X1400\Cont1_P5Y100\Cont1_P6X1750\Cont1_P6Y1000\Cont1_P7X2100\Cont1_
P7Y100\Cont1_P8X2450\Cont1_P8Y1000\Cont1_Col00ff00\Cont2_P1X0\Cont2_P1Y1000\Cont2_P2X350\Cont2_P2Y100\Cont2_P3X700\Cont2_P3Y1000\Cont2_P4X1050\Cont2_P4Y100\Cont2_P5X1400\Cont2_P5Y1000\Cont2_P
6X1750\Cont2_P6Y100\Cont2_P7X2100\Cont2_P7Y1000\Cont2_P8X2450\Cont2_P8Y100\Cont2_Colff0000;
</TestData>
</Format>
Dieses Protokoll kann beispielsweise verwendet werden, um eine oder mehrere einfache Kontur mit maximal 100 Variablen-Gruppen mit einem einfachen Klartext-String zu verändern.
Als Testdaten ist folgender ASCII-Stream hinterlegt:
Cont1_P1X0\Cont1_P1Y100\Cont1_P2X350\Cont1_P2Y1000\Cont1_P3X700\Cont1_P3Y100\Cont1_P4X1050\Cont1_P4Y1000\Cont1_P5X1400\Cont1_P5Y100\Cont1_P6X1750\Cont1_P6Y1000\Cont1_P7X2100\Cont1_P7Y100\Co
nt1_P8X2450\Cont1_P8Y1000\Cont1_Col00ff00\Cont2_P1X0\Cont2_P1Y1000\Cont2_P2X350\Cont2_P2Y100\Cont2_P3X700\Cont2_P3Y1000\Cont2_P4X1050\Cont2_P4Y100\Cont2_P5X1400\Cont2_P5Y1000\Cont2_P6X1750\Co
nt2_P6Y100\Cont2_P7X2100\Cont2_P7Y1000\Cont2_P8X2450\Cont2_P8Y100\Cont2_Colff0000;
Die dazugehörige RegExp ist:
(?U)Cont1_P1X(\d+)\x5c\Cont1_P1Y(\d+)\x5c\Cont1_P2X(\d+)\x5c\Cont1_P2Y(\d+)\x5c\Cont1_P3X(\d+)\x5c\Cont1_P3Y(\d+)\x5c\Cont1_P4X(\d+)\x5c\Cont1_P4Y(\d+)\x5c\Cont1_P5X(\d+)\x5c\Cont1_P5Y(\d+)
\x5c\Cont1_P6X(\d+)\x5c\Cont1_P6Y(\d+)\x5c\Cont1_P7X(\d+)\x5c\Cont1_P7Y(\d+)\x5c\Cont1_P8X(\d+)\x5c\Cont1_P8Y(\d+)\x5c\Cont1_Col([\da-fA-F]+)\x5c\Cont2_P1X(\d+)\x5c\Cont2_P1Y(\d+)\x5c\Cont2_P2X(\d+)
\x5c\Cont2_P2Y(\d+)\x5c\Cont2_P3X(\d+)\x5c\Cont2_P3Y(\d+)\x5c\Cont2_P4X(\d+)\x5c\Cont2_P4Y(\d+)\x5c\Cont2_P5X(\d+)\x5c\Cont2_P5Y(\d+)\x5c\Cont2_P6X(\d+)\x5c\Cont2_P6Y(\d+)\x5c\Cont2_P7X(\d+)
\x5c\Cont2_P7Y(\d+)\x5c\Cont2_P8X(\d+)\x5c\Cont2_P8Y(\d+)\x5c\Cont2_Col([\da-fA-F]+)\x3b
Die gefilterten Teildaten werden in verschiedene Variablen aufgeteilt.
Dies geschieht mit folgenden Definitionen:
<Var Match="1" Name="Cont1_P1X" />
<Var Match="2" Name="Cont1_P1Y" />
<Var Match="3" Name="Cont1_P2X" />
<Var Match="4" Name="Cont1_P2Y" />
...
<Var Match="30" Name="Cont2_P7X" />
<Var Match="31" Name="Cont2_P7Y" />
<Var Match="32" Name="Cont2_P8X" />
<Var Match="33" Name="Cont2_P8Y" />
<Var Match="34" Name="Cont2_Col" />
Der Wert an der ersten erkannten Gruppe wird intern auf die Variable "Cont1_P1X" gemapped, Gruppe zwei demnach auf Variable "Cont1_P1Y" usw. .
Die Variablennamen können Kunden- und Anwendungsspezifisch benannt werden und haben an dieser Stelle nur einen symbolischen Namen.