[C++Builder] SIMD
#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
#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
#pragma pack(push,1)
struct TAPP1Header {
WORD Maker;
WORD Size;
byte Magic[6];
};
#pragma pack(pop)
typedef int (__stdcall *TMyFunc)(int Param1,int Param2);
StrToIntは文字列を数字に変換するための関数ですが、引数に数字として不正な文字列(例えば「125a」とか)を渡すと例外が発生してしまいます。これをきちんと処理するのが面倒だったり、単純に不正な文字列が渡された場合は-1を返してほしいと思う場合があったりします。そういう時に便利なのがStrToIntDefという関数です。
i:=StrToIntDef(Edit1.Text,-1);
というようにデフォルト値を指定して変換ができます。変換に失敗した場合はデフォルト値が返される仕組みです。例外は発生しません。場合によっては非常に便利な関数です。
#ifndef HeaderH
#define HeaderH
//
AnsiStringのsprintfメソッドを使います。
書式はDelphiのFormat関数と同じような感じです。
AnsiString Str=AnsiString().sprintf("%.5d",i);
リソースをテキストエディタなど作成して「tmp.rc」というような名前で保存します。そのファイルをプロジェクトに追加してコンパイルします。rcファイルをBRCC32でコンパイルしてresファイルに変換しなくてもOKです。
リソースファイル(*.rc)の中身は
リソース名 リソースタイプ "ファイル名"
のように書きます。例えば、
MYICON ICON "MyIcon.ico"
MYBMP BITMAP "MyBmp.bmp"
のようです。
switch文のcaseでローカル変数を以下のように使おうとすると、「caseでローカル変数の初期化がとばされた」というようなエラーメッセージが表示されてしまいます。
switch (Value) {
case 0:
int i=0;
:
break;
default:
:
break;
}
このようなことをしたいときは時は次のようにcaseの中をブレースで括ります。
switch (Value) {
case 0:
{
int i=0;
:
break;
}
default:
:
break;
}
ウインドウの一覧を得るEnumWindowsというAPIがありますが、C++Builder6.0でこの関数を使用すると以下のようなエラーがでる場合があるようです。
----
E2034 'int (__stdcall *)(void *,long)'型は'int (__stdcall *)()'型に変換できない
E2342 パラメータ 'EnumWndProc' は int (__stdcall *)() 型として定義されているので int (__stdcall *)(void *,long) は渡せない
----
以下のように強制的にキャストをかけてしまえばコンパイルできるようになります。きちんと意図した動作もしているようです。
//関数の定義
BOOL CALLBACK EnumWndProc(HWND hWindow,LPARAM lData)
{
:
}
//呼び出し
EnumWindows((WNDENUMPROC)EnumWndProc,0);
Form上のコンポーネントのうち、ある特定のクラスから派生しているものだけに対して処理をしたい場合に使えるテクニックです。以下は、TControlから派生したクラスに対してのみ処理をする場合の例です。
for (int i=0;i<ComponentCount;i++) {
if (Components[i]->InheritsFrom(__classid(TControl))) {
TControl *Ctrl=(TControl *)Components[i];
//何か処理をする
}
}
ActiveX | C++Builder | C++言語・Pascal言語 | Delphi | TActionList | TColor | TEdit | TeX | TForm | TIniFile | TLabel | TListBox | TListView | TMemo | TProgressBar | TSplitter | TStatusBar | TStringGrid | TTrackBar | TWebBrowser | Windows | その他 | アルゴリズム | システム関連 | ネットワーク関連 | ファイル、フォルダの処理 | フォント関連 | フォーム・ダイアログ関連 | フリーソフト | プログラミング全般 | マウス、キーボードの処理 | 技術文書 | 文字列の処理 | 日付時刻の処理 | 画像関連 | 開発環境(IDE)関連