Im Auslieferungszustand gibt es drei Beispieldatensätze um die Funktionalität verständlich zu machen.


Die Sektion für eine oder mehrerer komplexerer Konturen lautet "Advanced contour example protocol".


Folgend der Dateiinhalt der Sektion:


<Format ID="ADVANCED_CONTOUR_PROTOCOL_EXAMPLE" Caption="Advanced contour example protocol" RegEx="(?U)(Cont(\d)_P(\d+)([XY])(\d+)\\)|(Cont(\d)_(Col)([\da-fA-F]+)\\)\x3b">

       <VarExt Name="C$(2)_$(3)$(4)" Value="$(5)" />

       <VarExt Name="C$(7)$(8)" Value="$(9)" />

                       

<TestData>Cont1_P1X36\Cont1_P1Y62\Cont1_P2X80\Cont1_P2Y233\Cont1_P3X279\Cont1_P3Y361\Cont1_P4X296\Cont1_P4Y566\Cont1_P5X496\Cont1_P5Y625\Cont1_Col00ff00\Cont2_P1X0\Cont2_P1Y1000\Cont2_P2X350\

Cont2_P2Y100\Cont2_P3X700\Cont2_P3Y1000\Cont2_P4X1050\Cont2_P4Y100\Cont2_P5X1400\Cont2_P5Y1000\Cont2_Colff0000\Cont3_P1X26\Cont3_P1Y52\Cont3_P2X80\Cont3_P2Y236\Cont3_P3X279\Cont3_P3Y361\Cont3

_P4X296\Cont3_P4Y566\Cont3_P5X496\Cont3_P5Y625\Cont3_Col00ff00\;

       </TestData>

</Format>



Dieses Protokoll kann beispielsweise verwendet werden, um eine oder mehrere komplexe Konturen mit unlimitierter Anzahl an Variablen-Gruppen mit einem einfachen Klartext-String zu verändern.



Als Testdaten ist folgender ASCII-Stream hinterlegt:        

Cont1_P1X36\Cont1_P1Y62\Cont1_P2X80\Cont1_P2Y233\Cont1_P3X279\Cont1_P3Y361\Cont1_P4X296\Cont1_P4Y566\Cont1_P5X496\Cont1_P5Y625\Cont1_Col00ff00\Cont2_P1X0\Cont2_P1Y1000\Cont2_P2X350\Cont2_P2Y1

00\Cont2_P3X700\Cont2_P3Y1000\Cont2_P4X1050\Cont2_P4Y100\Cont2_P5X1400\Cont2_P5Y1000\Cont2_Colff0000\Cont3_P1X26\Cont3_P1Y52\Cont3_P2X80\Cont3_P2Y236\Cont3_P3X279\Cont3_P3Y361\Cont3_P4X296\Co

nt3_P4Y566\Cont3_P5X496\Cont3_P5Y625\Cont3_Col00ff00\;



Die dazugehörige RegExp hält sich trotz der Komplexität hier recht klein.

Es wird hier, mit zwei durch ein ODER getrennten Filter, die Positionsdaten von den Farbdaten getrennt behandelt:

(?U)(Cont(\d)_P(\d+)([XY])(\d+)\\)|(Cont(\d)_(Col)([\da-fA-F]+)\\)\x3b



Folgend sehen Sie ein Beispiel, der durch die RegEx-Definition gefilterten Gruppe:

       Match[30]: "Cont3_P5Y625\"

       [$1]: "Cont3_P5Y625\"

       [$2]: "3"

       [$3]: "5"

       [$4]: "Y"

       [$5]: "625"


Match[31]: "Cont3_Col00ff00\;"

       [$1]: ""

       [$2]: ""

       [$3]: ""

       [$4]: ""

       [$5]: ""

       [$6]: "Cont3_Col00ff00\"

       [$7]: "3"

       [$8]: "Col"

       [$9]: "00ff00"



Die zuvor gefilterten Teildaten müssen nun in verschiedene Variablen aufgeteilt werden.

Dies geschieht bei diesem Beispiel mit zwei dynamischen untergeordneten mappings.

       <VarExt Name="C$(2)_$(3)$(4)" Value="$(5)" />

       <VarExt Name="C$(7)$(8)" Value="$(9)" />



Aufbau der ersten Variable:

"C", gefolgt von den Daten der zweiten Gruppe aus der RegEx-Filterung.

Nun ein Unterstrich, gefolgt mit der dritten und vierten gefilterten Gruppe.

Hier würde bei der ersten Filterung also ein "C3_5Y" als Name genutzt werden.


Der Wert zu diesem Namen aus der Gruppe fünf generiert und wäre somit "625".



Bei der zweiten Variable für die anzuwendende Farbe wird daher folgendes generiert:

Name: "C3Col"

Value: "00ff00"



Die Variablennamen können Kunden- und Anwendungsspezifisch benannt werden und haben an dieser Stelle nur einen symbolischen Namen.