1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
[Flags]
private enum Testflag
{
Testa = 0x1, // 00000001
Testb = 0x2, // 00000010
Testc = 0x4, // 00000100
Testd = 0x8, // 00001000
}
public String HoleFlagFilterExpressionListe(Type FlagType, Int32 Value)
{
// Zunächst wird der Maximumwert des Flags berrechnet der erreicht wird, wenn ALLE flags 'true' sind
Int32 MaximumWert = 0;
Int32 AnzahlFlags = (Enum.GetNames(typeof(UpdateFlag)).Length);
for (int i = 0; i < AnzahlFlags; i++)
{
MaximumWert += Putenziere(2, i);
}
// Dann werden die 'möglichen' Werte in einer Schleife berechnet
String FilterExpressionListe = String.Empty;
for (int i = 1; i <= MaximumWert; i++)
{
if (IstFlagGesetzt(i, Value))
FilterExpressionListe += "'" + i.ToString() + "',";
}
FilterExpressionListe = "(" + FilterExpressionListe.Remove(FilterExpressionListe.Length - 1, 1) + ")";
return FilterExpressionListe;
}
private Int32 Putenziere(Int32 Basis, Int32 Putenz)
{
if (Putenz == 0)
return 1;
Int32 Ergebnis = Basis;
for (int i = 0; i < Putenz - 1; i++)
{
Ergebnis = Ergebnis * Basis;
}
return Ergebnis;
}
public Boolean IstFlagGesetzt(Int32 BenutzerRechtFlag_Datenbank, Int32 PruefFlag)
{
return (PruefFlag & BenutzerRechtFlag_Datenbank) != 0;
}
|