2023-01-01から1年間の記事一覧
Windows環境でLPWSTRからスマートポインタ的なBSTRを作成する方法には次の2通りあります。 _bstr_t(...) <comutil.h> wil::make_bstr(...) "wil/com.h" 前者の_bstr_t(...)はコンパイラ付属なので追加インストールが不要ですが、ムーブセマンティクス非対応で独自の参照</comutil.h>…
Googleはログアウト状態だと履歴の記録を止めると思い込んでいましたが、Google検索の「検索でのデータ」と「広告設定」の管理画面を見る限り記録していたようです。 Google 検索でのデータ 日本語版ではGoogle検索トップページ右下の設定をクリック→検索に…
パッケージで使いまわしたいグローバル変数やインポートは__init__.pyと別ファイルの組み合わせで隠せます(見えにくくできます)。具体的には次の手順です。 パッケージ名のディレクトリと__init__.pyを作成する。 グローバル変数やインポートを使いたいス…
配列の入ったobject型をstring.Join()で結合するにはIEnumerableにキャストしてからOfType<T>()を使います。キャストせず渡すと可変長引数の最初の引数として素直にToString()されます。ちなみにIEnumerableへキャストすると文字列(char[]配列)も分割されるの</t>…
ユーザーコントロールのobject、nint、nuint型プロパティはプロパティウィンドウで読み取り専用になります。 // UserControl1.Designer.csとUserControl1.resxは既定値なので省略します。 namespace UserControlTest1; public partial class UserControl1 : …
Visual Studio 2022はC++でユーザー定義のデバッグ変数ウィンドウ視覚化に対応しています(natvis)。この機能でクラスのメンバー関数を使おうとしたらいきなり適用されなくなり戸惑ったので現象と解決策を共有します。 natvisの紹介 次の2つのファイルmain.…
C#ではカスタム属性でクラス自体にIIDを持たせられます。ただし静的メンバーより動作は遅く、Guidのような非標準型は属性定義時の引数に渡せないようです。 using System.Reflection; Console.WriteLine(IIDAttribute.Of<ClassWithIPersistIID>()?.ToString("B") ?? "(未定義)"); C</classwithipersistiid>…
C#で自分用のクラスライブラリを作るとき、最中にもエラー対処パターンで悩みます。COM開発で使えるデザインパターンはおそらくHRESULTパターン、例外パターン、Nullableパターン(適当に名付けました)なのですが、一長一短です。 HRESULTパターン エラーを…
ジェネリック関数ではenum型は通常の方法((int)...)で整数へ変換できません。 Convert.ToInt32やConvert.ToUInt32等を使えばジェネリック関数でもenum型を整数へ変換できます。 using System; Console.WriteLine(f(Enum1.A)); string f<T>(T t) where T : Enu</t>…