PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : beliebige Kombination/Reihenfolge von Werten


nols
25.03.2008, 11:44
Hallo Experten,
vielleicht könnt ihr mir helfen. Ich zerbreche mir schon etwas länger darüber der Kopf.
Also folgender Sachverhalt:

Ich habe einen String in dem z.b. folgende Werte drin stehen:
VAR_X|VAR_C|BIT4|BIT5|VAR_XYZ|BIT12|BIT13Diese Werte entstehen aus einem Bitfeld einer Binärdatei. Das heißt jeder
Substring (getrennt durch "|") repräsentiert ein gesetztes Bit.


Durch
(((VAR_X|VAR_Y|BIT4|BIT5|BIT12|BIT13|VAR_XYZ)\|){0,5}(VAR_X|VAR_Y|BIT4|BIT5|BIT12|BIT13|VAR_XYZ))?kann ich den String validieren. Das heißt jetzt können die obengenannten Werte in jeder beliebigen Kombination vorkommen. Es dürfen welche fehlen, vertauscht sein, etc.
Z.B. würde ein
BIT13|VAR_X|VAR_C|BIT5|VAR_XYZ|BIT12ebenfalls gültig sein.

Soweit so gut, kann mir noch wer folgen?
Jetzt mein Problem! Was mache ich nun wenn z.B. die Werte BIT4 & BIT12 immer gesetzt sein müssen. Und diese dürfen natürlich auch bunt mit den anderen gemischt werden.

Ich hatte es schon mit:
(VAR_X\|?)?(VAR_Y\|?)??BIT4\|BIT5\|(VAR_XYZ\|?)?BIT12\|BIT13versucht. Das klappt für den ersten String, aber mit vermischter Reihenfolge nicht mehr.

Könnt ihr mir helfen?

Hintergrund des ganzen ist:
Ich bekomme die Daten so wie oben im ersten String von einem Converter aus einem Binärdateien geliefert. Hier befinden sie sich noch in einer definierten Reihenfolge. Nun soll aber ein Benutzer die Werte in einer Oberfläche ändern können, z.b. Werte die wiederrum einzelne Bits repräsentieren hinzufügen. Da die
Benutzung eh schon nicht sehr intuitiv ist, soll der Benutzer sich auch nicht mehr um die Reihenfolge der Werte kümmern. Daher kann es sein das die Reihenfolge der Werte beliebig wird.

Noch ein Haken an der Sache ist: Ich habe keinen Einfluss auf den Converter und auch keinen auf die Oberfläche :( Ich muss also irgendwie dafür sorgen das die Werte vom Converter validiert werden.
Ich meine der Converter arbeitet mit Posix RegExp.

Danke für euere Hilfe und danke das ihr alles durchgelesen habt ;-)


Tar-Minyatur
25.03.2008, 16:05
Ich würde einfach mal behaupten, dass du da keine Chance hast, außer alle Möglichkeiten einzeln anzugeben. Wesentlich einfacher wäre es allerdings, wenn du einfach seperat in einem zweiten Check die beiden Werte auf Existenz prüfst.

nols
25.03.2008, 16:28
Ich würde einfach mal behaupten, dass du da keine Chance hast, außer alle Möglichkeiten einzeln anzugeben. Wesentlich einfacher wäre es allerdings, wenn du einfach seperat in einem zweiten Check die beiden Werte auf Existenz prüfst.

Mit der Antwort hatte ich gerechnet :(
Eine zweiten Scheck kann ich leider nicht einfügen, da ich ja, wie gesagt, keinen Einfluss auf die Oberfläche oder den Converter habe. :(

Noch jemand ne Idee?