Domino 9 und frühere Versionen > ND7: Entwicklung
Binäres und in Formelsprache
MaxMuster:
Hallo!
Lässt sich ein binäres und in Formelsprache (z.B. in Hide when Formeln ) abbilden?
--- Code: ---Wert := 10;
Flag := 4;
Wert & Flag = Flag
--- Ende Code ---
Binär würde daraus:
Wert := 01010
Flag := 00100
& ---------
00000 == 00100 (False)
Ein Beispiel für True wäre:
Wert := 01110 (14)
Flag := 00100 (4)
& ---------
00100 == 00100 (True)
Über die Sinnhaftigkeit über Flags habe ich schon erfolglos gestritten ...
Glombi:
In Formelsprache gibts keine bitweisen Operationen (jedenfalls kenne ich keine).
In Script sähe es so aus:
Dim x As Integer, y As Integer
x% = &b01010
y% = &b00100
If Bin$(x% And y%) = Bin$(y%) Then
Msgbox "true"
Else
Msgbox "false"
End If
Andreas
MaxMuster:
Hallo Andreas,
auf die Idee in Script die Flags Binär anzugeben bin ich gar nicht gekommen. Macht (zusammen mit Anmerkingen) den Code lesbarer
Bisher hatte ich in etwa so kodiert:
--- Code: ---Dim intWert As Integer
Dim intFlag As Integer
intWert = 12
intFlag = 2
Print ((intWert And intFlag) = intFlag) ' False
intWert = 22
intFlag = 2
Print ((intWert And intFlag) = intFlag) ' True
--- Ende Code ---
Die Flags sind im Designentwurf drinnen - über die Umsetzung in hideWhen Formeln habe ich noch keine Idee.
Stichworte sind Wilkommen.
Roger
Peter Klett:
In Hide-When bekommst Du das nur, wenn Du das Ergebnis in Felder des Dokuments schreibst und das Feld in der Hide-When-Formel abfragst
MaxMuster:
So, habe mir mal eine Kopiervorlage für hideWhen-Formeln gebaut. Eventuell kann es jemand gebrauchen bzw. findet grobe Schnitzer ;)
Die Einschränkungen sind: Nur 32 Bit; Es wird nur ein Bit abgefragt.
Roger
--- Code: ---_Wert := Wert ; REM {Die Flags als Dezimalwert (hier aus dem Dokument gelesen)};
_WhichBit := Flag; REM {Welches Bit für die Anzeige gesetzt sein muss (hier aus dem Dokument gelesen)};
REM { --==[ DO NOT EDIT BELOW THIS LINE]==-- };
_BitValues := 1 : 2 : 4 : 8 : 16 : 32 : 64 : 128 : 256 : 512 : 1024 : 2048 : 4096
: 8192 : 16384 : 32768: 65536 : 131072 : 262144 : 524288 : 1048576
: 2097152 : 4194304 : 8388608 : 16777216 : 33554432 : 67108864
: 134217728 : 268435456 : 536870912 : 1073741824 : 2147483648 ;
_BitIndex := @Elements(_BitValues);
@While( _BitIndex > 0;
_BitValue := @Subset(@Subset(_BitValues; _BitIndex); -1);
_Flag := @If( (_Wert - _BitValue) >= 0; @True; @False);
_Bits := _Bits + ";" + @Text(_Flag ) ;
@If(_Flag; _Wert := _Wert - _BitValue; 0);
_BitIndex := _BitIndex -1
);
_Bits := @Right(_Bits;@Length(_Bits)-1); REM {Führendes ';' abschneiden};
REM {Falls noch woanders damit Weitergerechnet werden sollte};
_BitList := @Explode( _Bits ; ";"); REM {Liste mit den Bitwerten (hoch nach niedrig)};
_BitString := @ReplaceSubstring( _Bits; ";";"") ; REM {String mit den Bitwerten (hoch nach niedrig)};
_Result := @If( @TextToNumber(@Subset(@Subset(_BitList; - _WhichBit);1)) = 1; @True ; @False);
!( _Result )
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln