問題タブ [bitflags]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3065 参照

python - Python: ファイルに複数の属性を設定する (例: System、Hidden)

Pythonを使用して複数のファイル属性を設定する方法は何ですか?

たとえば、ファイルの属性をシステム、非表示に設定したい。

以下のようなものを使用できますが、属性を 1 つだけ設定し、以前の書き込みを上書きします。

これは Hidden 属性だけになります。

両方の属性を同時に設定するにはどうすればよいですか? ありがとう。

0 投票する
2 に答える
2201 参照

c# - C# 列挙型フラグ - 役割の編集、表示、管理

私は自分の役割を次のように定義しています。

  • 表示ロール、表示のみ可能
  • 編集は表示と編集のみ可能
  • 管理者は管理者の作業、編集、表示を行うことができます

Enum の定義に何か問題がありますか?

0 投票する
3 に答える
7069 参照

java - @IntDef、@StringDef、または任意の @Def クラスの値を反復します

このクラスを考えてみましょう:

私はよくこのようなものを作成してきましたMysteryFlags.

で設定した値を繰り返し処理できますMysteryFlagsか?

これは私が試したことです:


これは印刷されましたANNOTATION: @java.lang.annotation.Retention(value=SOURCE)


これにより、null 配列アクセスで NPE がスローされました


これらは何も出力しませんでした:


値を配列に追加してそれを繰り返すだけでよいことはわかっていますが、それには別の配列を格納する必要があります。それは私がやったことですが、もっと良い方法があるかどうかはまだ疑問です。

0 投票する
1 に答える
49 参照

vb.net - 直接印刷しないプリンターのリストを取得するには?

直接印刷しないプリンターのリストが必要です。直接印刷できるリストを取得するのはかなり簡単に思えます。しかし、その逆をどうするか。

PrintServer.GetPrintQueues メソッド

EnumeratedPrintQueueTypes 列挙体

MSDN によると、EnumeratedPrintQueueTypes には、メンバー値のビット単位の組み合わせを可能にする FlagsAttribute 属性があります。なので、NOT direct を何とか指定できるはずです。どうすればいいのですか?

私はこれをやろうとしましarrFlags(0) = Not System.Printing.EnumeratedPrintQueueTypes.DirectPrintingたが、結果は返されませんでした。明らかに間違っています。

では、flags 属性を操作して、直接印刷するすべてのプリンターを排除するにはどうすればよいでしょうか。

0 投票する
1 に答える
81 参照

c++ - C ビット フラグは設定解除できません

C/C++ で独自のビット フラグの使用を実装しようとしています。getBool、 、 の3 つの関数がsetBoolありprintBoolsます。一部を除く現在のコードのすべて: ビットを false に設定できません。それらは問題なく true に設定され、問題なく読み戻されますが、true ビットを false に設定することはできません。これが私のコードです:

さらに、出力をすぐに確認したい場合は、次のリンクを参照してください: cpp.sh/6gpuご協力 ありがとうございます。

0 投票する
1 に答える
133 参照

sql - ビット フィールドを複数の行に展開する (ちょっとした結合)

次のようなテーブルがあるとします。

そして、次のようないくつかのデータ:

DayOfWeek に複数のフラグがある場合、SELECT ステートメントで複数の行を生成するにはどうすればよいですか?

たとえば、次の行です。

これは、SELECT ステートメントで 5 行で表されます (日/フラグ セットごとに 1 行)。

すべてのデータで同じクエリを実行すると、19 行が得られます。

  • 7 行 - 個々の日 (1、2、4、8、16、32、64) ごとに 1 行
  • 5 行 - 営業日 (62)
  • 7 行 - 毎日 (127)

どうすればこれができるかわかりません。これを行うにはカーソルを使用できると思いますが、ここではそれが最適なオプションですか?

ありがとう。

0 投票する
1 に答える
33 参照

.net - .NET Enum と BitFlags

私は[Enum]自分のページの特別なテンプレートのリストの一部として使用しています..

[Enum]簡単にするために、これらを次のように再グループ化します。

ここで、GROUP2 を選択すると、ITEM31/32/33/34 (4 アイテム) ではなく、ITEM1/2/31/32/33 (5 アイテム) が得られます。実際、ビットフラグに関しては、1,2、1073741824 & -2147483648 でした。

だから私は2つの質問があります:

  • BitFlags を使用して各列挙型にいくつの要素を含めることができますか?
  • 私はそれが 64 でなければならないと仮定しLongます - どうすれば私のリストで正しい「グループ」を取得できますか?

ご回答ありがとうございます。

フレッド

0 投票する
5 に答える
3128 参照

c++ - C++でtrue、false、default、およびtoggleオプションを使用してフラグを実装する方法は?

私は現在、通常の「true」と「false」に加えて、「デフォルト」と (オプション) 「トグル」の状態を含むフラグを実装する賢い方法を考え出そうとしています。

フラグの一般的な問題は、関数があり、特定のパラメーターを渡すことによってその動作 (「何かを行う」または「何かをしない」) を定義したいということです。

シングルフラグ

単一の(ブール値)フラグを使用すると、ソリューションは簡単です。

ここでは、関数を次のように変更するだけで、デフォルトを追加するのが特に簡単です。

flag パラメータなしで呼び出します。

複数のフラグ

フラグの数が増えると、私が通常目にして使用するソリューションは次のようになります。

これには、フラグごとにパラメーターが必要ないという利点があります。つまり、ユーザーは好きなフラグを設定して、気にしないフラグを忘れることができます。foo (/*args*/, true, false, true)特に、どの true/false がどのフラグを示すかを数えなければならないような呼び出しは受けません。

ここでの問題は次のとおり
です。デフォルトの引数を設定すると、ユーザーがフラグを指定するとすぐに上書きされます。のようなことはできませんFlag1=true, Flag2=false, Flag3=default

明らかに、3 つのオプション (true、false、default) が必要な場合は、フラグごとに少なくとも 2 ビットを渡す必要があります。したがって、必要ではないかもしれませんが、どの実装でも 4 番目の状態を使用してトグル (= !default) を示すのは簡単だと思います。

これには2つのアプローチがありますが、どちらにも満足していません。

アプローチ 1: 2 つのフラグを定義する

私は今までこのようなものを使ってみました:

ただし、これについて私が気に入らないのは、各フラグに 2 つの異なるビットが使用されていることです。これにより、「default-true」フラグと「default-false」フラグのコードが異なり、必要な if のナイスなビット操作の代わりになりapplyDefault()ます。

アプローチ 2: テンプレート

次のようにテンプレートクラスを定義することにより:

applyコンパイル時に既知の 1 つを除くすべての引数を使用して、 を 1 つのビット単位の演算に凝縮することができました。したがって、を (gcc を使用して) を使用して、、またはwouldTFlag::applyと同じマシン コードに直接コンパイルすると、非常に効率的ですが、引数としてa を渡したい場合は、テンプレート関数を使用する必要があります。引数を継承して使用すると、仮想関数呼び出しのオーバーヘッドが追加されますが、テンプレートを使用する必要がなくなります。return true;return false;return prev;return !prev;TFlagFlagconst Flag&

ただし、これを複数のフラグにスケールアップする方法がわかりません...

質問

問題は次のとおりです。C++ の 1 つの引数に複数のフラグを実装して、ユーザーが簡単に「true」、「false」、または「default」(特定のフラグを設定しないことで) または (オプション) に設定できるようにするにはどうすればよいですか? 「デフォルトではないもの」を示しますか?

独自のビット単位演算子を使用したテンプレート アプローチのような同様のビット単位操作を使用して、2 つの int を持つクラスを使用する方法はありますか? もしそうなら、コンパイル時にほとんどのビット演算を実行するオプションをコンパイラに与える方法はありますか?

明確にするために編集: 「true」、「false」、「default」、「toggle」の4つの異なるフラグを関数に渡したくありません。
たとえば、「境界を描く」、「中心を描く」、「塗りつぶしの色を描く」、「ぼやけた境界を描く」、「円を上下に動かす」、「その他の空想を行う」などのフラグが使用される場所に描かれる円を考えてみてください。円でできること」、....
そして、これらの「プロパティ」のそれぞれについて、true、false、default、または toggle のいずれかの値を持つフラグを渡したいと思います。そのため、関数はデフォルトで境界線を描画し、色を塗りつぶし、中央に配置することを決定するかもしれませんが、残りは何もしません。おおよそ次のような呼び出しです。

境界線を描画し (フラグで指定)、中心を描画せず (フラグで指定)、境界線をぼやけさせ (フラグはデフォルトではないと言っています)、塗りつぶしの色を描画します (指定されていませんが、デフォルト)。
後でデフォルトで中心を描画せず、デフォルトで境界をぼかすことにした場合、呼び出しは境界を描画し(フラグで指定)、中心を描画せず(フラグで指定)、境界をぼかす必要はありません(現在はぼかしがデフォルトです) 、ただしデフォルトは必要ありません) 塗りつぶしの色を描画します (フラグはありませんが、デフォルトです)。