予定は未定

記事中のプログラムコードについて、常識的な範囲で引用・プログラムへの利用ができます。利用に当たって許諾の必要はありません。

WIC(Windows Image Component)でJpegの撮影日時を得る

WIC(Windows Image Component)でJpegの撮影日時を得ようとしていろいろ調べてみたが、ドキュメントがほとんど無いので残す。C++ Builder、DelphiではTWICImageを使えば良いように思うが、結論としてはTWICImageから日時を引き出せない。 このため、COMでゴリ…

ToInt系は使うな

C++ Builderで文字列から数値を得るための簡便な関数としてUnicodeString::ToInt()、StrToInt( int )等がある。 便利なのだが使い勝手の問題があって、結局そのままこれらの関数を呼び出しするようなコードを書くと、意図せぬ結果になる場合があるので備忘。…

Inno setupでsigntoolの設定備忘

昨日突然プログラムのデジタル署名が出来なくなり焦った。 サポートに頼ってなんとかなった。サポート様ありがとう。 どうもWindows Updateで電子証明書関連が壊れたか参照がおかしくなったかしたみたいだ。さて、次にやるとき忘れないようメモ。トークン更…

C++を使うならenumではなくenum classを使え

C++でC++11以降であれば、enumではなく、enum classを使う癖を付ける。 C++98やC++03など古い規格ではenum classは使えないが、enumの列挙子を記述する上では以降の注意点を守った方が良い。enumで宣言すると以下の通り。enSampleを付加しないで列挙子a1を使…

リンクURL中に@が有ったら詐欺メール

詐欺メール等から自己防衛するメモ 銀行などを装ったメールを確認するチェック事項リスト 1.メールの受信設定でHTMLで表示しない HTMLで表示させると自動で画像やリンクされたデータが自分のパソコンにダウンロードされる。 まず、これでそのアドレスが有効…

コンストラクター内でキャストするとき、および仮想関数の注意点

C++は難解なプログラム言語だと言われる。 自分は使える範囲しか使わないのし、長年の間少しずつ覚えてきたこともあり、そんなに難解なのかなと思うこともある。 まあ、テンプレートはさほど使わないし、ラムダ式とかその辺になると???となる。そんな中で、…

日本沈没とスロースリップ

Google ニュースで見出しに首をかしげたので読んでみた。diamond.jpまあ、100倍の速度でプレートが動けば沈み込みも派手になるかな・・・と思うけど、地震が多くなるだけで変わらないかもしれない。 地震の発生がプレート境界の歪みの釣り合いで発生すると仮…

Windowsの大型アップデート後などに表示されるあれを表示させない

Windowsの大型アップデート(1年ごとのやつとか)の後には、「PCのセットアップを完了しましょう」というメッセージと共に、毎回同じことをさせられる。 あれは意味が無いし、うっかり押し間違えると押し売りまがいに陥りかねない。 それをなくす方法のメモ。1…

C++BuilderでWin64モダンはどう判別するのか

Win64(モダン)はコンパイラーで言うとBCC64X。名称がいろいろ錯綜していて、12.3以降のオプション設定ではWin64モダン専用のオプションの断りにCOFFのみとかが出てきたりしてなんじゃそらになっている。 以前の記事でコンパイラー判別関連のマクロを整理した…

整数版Powについて(その2 オーバーフローチェック版)

以前、整数版のpowについて検討した。 この時はオーバーフローチェックを入れないケースのみでの検討で、主にループ回数による計算量の変化を検討した。今回は、オーバーフローチェックを入れた版を複数作成し、どの版が良いか検討する。 また、前回はループ…

BASE64デコードのC++コード

メールの解析などで使うことが多いBASE64のデコード。 ライブラリーとなっている場合も多いので、それを使えば用が足りる。車輪の再発明になるようだが、意外とコード例が転がっていないようだということと、注意点があるので記事にした。 今回のコードを作…

1.17 30年追悼式典におもう

阪神淡路大震災30年が経った。今日の式典は、知事の式辞、天皇陛下のお言葉の順で、その後粛々と進められた。 知事の式辞も陛下のお言葉も、犠牲者へ向いて発せられた。この式で発すべきことは慰霊のための言葉だ。 犠牲者に向けて30年たったこの時に、何を…

C++ Builderにおいてclang系の警告抑制方法

C++ Builderは、古い32ビットコンパイラーからclangベースのコンパイラーに移行していっている。 今後のコードメンテナンスも考えると、clang系でコンパイルする方が良いだろう。 ただ、マニュアルはclang系に対応しきっていないようで、今回の警告抑制もド…

EAC1.6 ローカライズ(日本語化)

freeDBを使いたいために1.6を使い続ける人のために、Exact Audio Copy ver1.6用の日本語リソースもあげておく。EAC V1.6用日本語リソース EAC_LANG_JAPANESE_V1_6.zip - Google ドライブ

EAC1.8 ローカライズ(日本語化)

Exact Audio Copy(EAC)が今年になって立て続けにバージョンアップし、現在1.8。 日本語へのローカライズは、MUSIC PCのV1.3 beta3が有名で私も昔はそれを利用していた。 残念なことにそれ以降のバージョンへの対応がないので、最近のバージョンでは(使えはす…

operator=()をoverrideできるのか?

C++

operator=()をoverrideできるのか? できるかできないかであれば、できる。 しかし、しない方が良いだろう。ベースクラスのポインターを保持する関数などで派生クラスを含めたコピーをしたい場合どうなるか。 確認をした。 なお今回のお題では呼び出し側での…

namespaceに関する備忘(その1)

namespaceで名前空間を指定すると、同じ関数名でも別の名前空間であればコンフリクト(名前の衝突)しないので、プログラム作成の上で重宝する。 例えば、テンポラリーな処理を行う上でローカルな関数を定義することがあるが、関数名を定義しているのを忘れて…

中華系スパム再び

3月中は結局30日まで1通も来なかった中華系詐欺メール。 3月31日より平常運転に・・・日4~8通くらいかな、詐欺メールが来る。 それぞれIPは異なるので、別サーバーなのだが結局なんだったのだろう?

TRichEditでリッチなテキストをプログラムする

TRichEditを使って、メモ帳もどきを作る場合は、編集ボタンなどでモードを切り替えするなどすれば、任意の修飾を行える。 一方、プログラムで文字列を修飾しようとすると気をつける必要がある。 修飾を前提とした場合やってはいけないこと TRichEdit::Text、…

PILOTの顔料インク 強色(TSUWAIRO)

この4日にPILOTから顔料インクの強色(TSUWAIRO)が発売された。 知っている範囲ではPILOTの万年筆用顔料インクは初めてのはず。 国内大手3社(PILOT,SAILOR,プラチナ)の中では最後発となる。 同時にクリーニングキットも発売、こちらも最後発。現在、自分がメ…

中華系スパムが来なくなって怖い

大体1日に数通来ていた中華系詐欺メール。 メールソースのDate:を見れば+8:00となっていて、IPアドレスを確認しなくともほぼ確実に中国発のメールだと判る。 これが今月に入ってから1通も来ないので気持ちが悪い。 逆に-3:00とか-8:00,-9:00と言ったアメリカ…

Viewport3Dの画像をコピー・印刷するには

TViewport3Dの画像をコピーしたり印刷したい場合はどうするか。 その方法と注意点について示す。 まず、今回のコードはAndroidでは動かない(プリンターサービスとかがない)コードが含まれるので注意。 画像をコピー TViewport3Dの画像をクリップボードにコピ…

CSIDLではなく KNOWNFOLDERIDをつかう。GetSpecialFolderPathではなくGetKnownFolderPathをつかう

久しぶりにWindows規定のフォルダーを調べる必要があって、CSIDLの何だっけと調べてみた。MicrosoftのCSIDLに関するページをみると、最初に以下のように書かれている。 注意 Vista Windows、これらの値は KNOWNFOLDERID 値に置き換えられています。 新しい定…

enumを基に変換関数を内蔵したオブジェクトをつくる

enumで定義されたデータをシリアライズするときは、何らかの数値(あるいは文字列)と相互変換する。 相手がintでC言語であれば、単純にキャストで相互変換もできる。C++であればstatic_castを使うこともあるだろう。 enum en { e1, e2, e3 }; en e = e3; int …

オブジェクト毎に内部インターフェースをカスタマイズする方法

複数のオブジェクトクラスに対して、同じ動作をさせるクラスの設計をすることがある。 例えば、ファイルへのIO処理はいろいろなオブジェクトを文字列かバイナリに相互変換させるクラスあるいは関数を設計する。 毎度個別に記述するのも良いが、もう少し簡便…

拡張メタファイルの描画精度

Windows上でベクター画像を取り扱うプログラムを作成する場合、サイズを変更しても劣化のないメタファイル・拡張メタファイル形式は一定のメリットがある。 特にクリップボード経由の場合は便利なことが多い。 一方、メタファイルを用いる場合、ビットマップ…

C++ Builderの出力mapのアドレスは相対アドレス

タイトルの通り、C++Builderで出力されるmap中のアドレスは相対アドレスになる。 このため、実行時のアクセス違反メッセージで表示されるアドレス値とは異なることに注意。ベースアドレスは最初に記述されている。例えば以下の通り。 Start Length Name Clas…

C++ Builderの出力mapを自動コピーして保存する

C++ Builderもリンク時にmapファイルを出力できる。 release版でアドレス違反が発生したときのメッセージをもとに、mapファイルで発生元の関数を推測できる。ただし、そのためには準備がいる。 mapの出力設定はオプションのリンカ→出力→マップファイルの種類…

フォームの閉じ方とModalResultの設定について

VCLでフォームを表示させ終了時にフラグで処理を変更したいときにフォームのModalResultを参照するケースがある。 ただし、ModalResultの設定については注意しなければいけない点があるのでメモ。 また、フォームの閉じ方についてもメモ。 ShowModalで表示さ…

TImageViewerなどでZoomジェスチャーの処理をする

TImageViewerなどでZoomジェスチャーの処理について探せる範囲で情報が無いのでメモ。処理は幾つかの状態保存変数とOnGestureイベントの記述で済む。 まず、TImageViewerのTouchプロパティのInteractiveGesuturesを開いてZoomをTrueにする。 OnGestureコード…