vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: C# => VB.NET: if (Flags & FlagToCheck) 
Autor: ModeratorDaveS (Moderator)
Datum: 09.09.11 15:46

Du vergleichst Bitwerte mit Integer-Werten, das ist völlig falsch. Sieben hat zB den Bitwert 111. Du prüfst ob alle drei Bits gleichzeitig gesetzt sind. Da fehlt ein wenig die Grundlagen wie man mit Bitfeldern umgeht, schätze ich. Die einzelnen Werte kannst du übrigens so auslesen:
        Dim x As FileSystemRights = 1
        For i = 0 To 31
            Debug.WriteLine(x)
            x <<= 1
        Next
Das Ergebnis:
ReadData
CreateFiles
AppendData
ReadExtendedAttributes
WriteExtendedAttributes
ExecuteFile
DeleteSubdirectoriesAndFiles
ReadAttributes
WriteAttributes
512
1024
2048
4096
8192
16384
32768
Delete
ReadPermissions
ChangePermissions
TakeOwnership
Synchronize
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
1073741824
-2147483648
(Nicht alle Werte sind in der Enum)

Wenn du deinen Wert richtig vergleichst
        Dim RechtID As FileSystemRights = 1179817
        ' 1179817 = &H001200A9
        ' = Bits 00000000000100100000000010101001
        Dim x1 As FileSystemRights = 1
        For i As Integer = 0 To 8
            If (RechtID And x1) = x1 Then
                Debug.WriteLine(x1.ToString() & " True")
            Else
                Debug.WriteLine(x1.ToString() & " False")
            End If
            x1 <<= 1
        Next
bekommst du das korrekte Ergebnis
ReadData True
CreateFiles False
AppendData False
ReadExtendedAttributes True
WriteExtendedAttributes False
ExecuteFile True
DeleteSubdirectoriesAndFiles False
ReadAttributes True
WriteAttributes False
Das erklärt übrigens warum du meinst es geht "richtig" mit 2 ^ x, du wandelst damit einen Integerwert in entsprechendes Bit. Du bekommst die gleiche Liste der einzelnen FileSystemRights-Werte wie oben mit diesem Code, zB.:
        Dim x As System.Security.AccessControl.FileSystemRights
        For i = 0 To 31
            x = 2 ^ i
            Debug.WriteLine(x)
        Next

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
C# => VB.NET: if (Flags & FlagToCheck)1.370CLL09.09.11 08:39
Re: C# => VB.NET: if (Flags & FlagToCheck)1.074ModeratorDaveS09.09.11 09:08
Re: C# => VB.NET: if (Flags & FlagToCheck)1.061ModeratorRalfE09.09.11 09:10
Re: C# => VB.NET: if (Flags & FlagToCheck)1.329CLL09.09.11 09:24
Re: C# => VB.NET: if (Flags & FlagToCheck)1.043ModeratorDaveS09.09.11 09:26
Re: C# => VB.NET: if (Flags & FlagToCheck)1.002CLL09.09.11 09:56
Re: C# => VB.NET: if (Flags & FlagToCheck)1.153ModeratorDaveS09.09.11 10:06
Re: C# => VB.NET: if (Flags & FlagToCheck)1.043CLL09.09.11 13:54
Re: C# => VB.NET: if (Flags & FlagToCheck)1.013ModeratorDaveS09.09.11 14:15
Re: C# => VB.NET: if (Flags & FlagToCheck)1.020CLL09.09.11 14:26
Re: C# => VB.NET: if (Flags & FlagToCheck)1.041ModeratorDaveS09.09.11 14:41
Re: C# => VB.NET: if (Flags & FlagToCheck)1.021CLL09.09.11 15:22
Re: C# => VB.NET: if (Flags & FlagToCheck)1.095ModeratorDaveS09.09.11 15:46
Re: C# => VB.NET: if (Flags & FlagToCheck)1.017CLL12.09.11 15:12

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel