[C++Builder,Delphi] デバッグウインドウにメッセージを表示する
OutputDebugString 関数を使うとIDEのデバッグ画面にメッセージを表示することができます。スレッドのデバッグなどに有効です。
OutputDebugString 関数を使うとIDEのデバッグ画面にメッセージを表示することができます。スレッドのデバッグなどに有効です。
Cryptographic API(CryptoAPI、CAPI)
http://msdn.microsoft.com/en-us/library/aa380256.aspx
//---------------------------------------------------------------------------
UnicodeString __fastcall CalcHash(UnicodeString Str)
{
UnicodeString Result="";
HCRYPTPROV hCryptProv = NULL;
HCRYPTHASH hHash = NULL;
if (!::CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) {
if(!::CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET)) {
return Result;
}
}
try {
if (!::CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash)) return Result;
try {
AnsiString TmpStr=Str;
if (!::CryptHashData(hHash, (BYTE*)TmpStr.c_str(), (DWORD)TmpStr.Length(), 0)) return Result;
BYTE bData[1024];
memset(bData, 0, sizeof(bData));
CHAR Digits[] = "0123456789abcdef";
DWORD dwDataLen = 16;
if (!::CryptGetHashParam(hHash, HP_HASHVAL, bData, &dwDataLen, 0)) return Result;
Result="";
for (DWORD i = 0; i < dwDataLen; ++i) {
Result+=Digits[bData[i] >> 4];
Result+=Digits[bData[i] & 0xf];
}
} __finally {
if (hHash) ::CryptDestroyHash(hHash);
}
} __finally {
if (hCryptProv) ::CryptReleaseContext(hCryptProv,0);
}
return Result;
}
ActiveXコントロールをインストールして利用する際に、何らかのエラーが発生するとHRCHECK: というタイトルのエラーダイアログが表示されます。例外ではないため、try catch で囲ってもダイアログの表示を抑制することができません。
ソースを見ると、このダイアログは PROMPT_ON_HRCHECK_FAILURE が define されていると表示されるようです。そのため、プロジェクトのオプションで NO_PROMPT_ON_HRCHECK_FAILURE を定義しておけば、このダイアログを表示しないようすることができます。
さらに詳しく知りたい人のためのキーワード:utilcls.h、OLECHECK、DebugHlpr_THROW
#include <Masks.hpp>
MatchesMask
#include <nmmintrin.h> // MMX-SSE4.2
#include <smmintrin.h> // MMX-SSE4.1
#include <intrin.h> // MMX-SSE3
#include <emmintrin.h> // MMX-SSE2
#include <xmmintrin.h> // MMX-SSE
#include <mmintrin.h> // MMX
C++ Builder 2009でTImageにPNG画像を読み込んでコンパイルすると以下のエラーがでる。TPNGImageを直接利用しても同様のエラー。
[ILINK32 エラー] Error: 未解決の外部参照 'Pnglang::_EPngInvalidCRCText' が C:\PROGRAM FILES\CODEGEAR\RAD STUDIO\6.0\LIB\OBJ\PNGIMAGE.OBJ から参 照されました
画像処理のパッケージがVCLJPGからVCLIMGに変更されたことが原因。
プロジェクトにPnglang.hppを追加するか(Program Files以下で検索すれば見つかる)、PNGImage.hppの適当なところに
#pragma link "vclimg.lib"
を書いておけば大丈夫
C++Builder 2009ではAnsiStringでコードページが指定できます。
typedef AnsiStringT<932> SJISString;
//非表示にする
#pragma warn -8056
//表示するようにする
#pragma warn .8056
VCの
#pragma warning(disable : 8056)
#pragma warning(default : 8056)
に対応
TForm *Dlg=CreateMessageDialog("元のファイルが上書きされます。続行し
てもよろしいですか?",mtWarning,TMsgDlgButtons() <<mbOk<<mbNoToAll<<mbYesToAll<<mbCancel);
Dlg->Caption="警告";
Dlg->ShowModal();
delete Dlg;
TMsgDlgBtn値、戻り値
mbOK、mrOk
mbCancel、mrCancel
mbYes、mrYes
mbNo、mrNo
mbAbort、mrAbort
mbRetry、mrRetry
mbIgnore、mrIgnore
mbAll、mrAll
mbNoToAll、mrNoToAll
mbYesToAll、mrYesToAll
TFormのCreateNewメソッドを使います。普通にnewするとリソースが見つからない、とエラーになります。
ActiveX | C++Builder | C++言語・Pascal言語 | Delphi | TActionList | TColor | TEdit | TeX | TForm | TIniFile | TLabel | TListBox | TListView | TMemo | TProgressBar | TSplitter | TStatusBar | TStringGrid | TTrackBar | TWebBrowser | Windows | その他 | アルゴリズム | システム関連 | ネットワーク関連 | ファイル、フォルダの処理 | フォント関連 | フォーム・ダイアログ関連 | フリーソフト | プログラミング全般 | マウス、キーボードの処理 | 技術文書 | 文字列の処理 | 日付時刻の処理 | 画像関連 | 開発環境(IDE)関連