Borland C++ Builder Tips
Borland C++ Builder 3がベースになっています。
Q1. 実行ファイルのディレクトリを取得するには? |
(例) AnsiString aaa = "e:\test\test1\test2\test3.exe" の場合、 ExtractFilePath(aaa) は e:\test\test1\test2\ となる。 |
Q2. 実行ファイルの名前を取得するには? |
(例) AnsiString aaa = "e:\test\test1\test2\test3.exe" の場合、 ExtractFileName(aaa)は、 test3.exe となる。 |
Q3. 実行ファイルの拡張子を取得するには? |
(例) AnsiString aaa = "e:\test\test1\test2\test3.exe" の場合、 ExtractFileExt(aaa) は .exe となる。 |
Q4. 実行ファイルのドライブを取得するには? |
(例) AnsiString aaa="e:\test\test1\test2\test3.exe" の場合 ExtractFileDrive(aaa) は e: となる。 |
Q5. 拡張子を変更するには? |
(例) AnsiString a; a = ExtractFileName(Application->ExeName); Label1->Caption = a; Label2->Caption = ChangeFileExt(a,".ini"); 実行すると Label1->Captionには "Project1.exe" Label2->Captionには "Project1.ini" が表示される。 |
Q6. 画面のプロパティに設定されているスクリーンセーバを起動するには? |
PostMessage(GetDesktopWindow( ), WM_SYSCOMMAND, SC_SCREENSAVE, 0); |
Q7. 画面の表示/非表示をするには? |
画面を表示する ShowWindow(Application->Handle, SW_SHOW); Show(); 画面を非表示にする ShowWindow(Application->Handle,SW_HIDE); Hide(); |
Q8. 画面のハードコピーをとるには? |
long lWidth = Screen->Width; long lHeight = Screen->Height; // Bitmapオブジェクトを生成 Graphics::TBitmap *Bitmap; Bitmap = new TBitmap(); // Bitmap オブジェクトのサイズを設定 Bitmap->Width = lWidth; Bitmap->Height = lHeight; //デスクトップのHDCを取得 HDC hDC = GetDC(0); // 画面のイメージをメモリにコピー lRet = BitBlt(Bitmap->Canvas->Handle, 0, 0, lWidth, lHeight, hDC, 0, 0, SRCCOPY); // HDCを開放 ReleaseDC(0,hDC); |
Q9. フォルダ(ディレクトリ)選択ダイアログを表示するにはには? |
#include |
Q10. ファイルの検索方法 |
下記の例では、 ListFile("a:\\"); を実行すると、aドライブ内の全てのファイルがListBox1に表示されます。 ListBox1->Items->Append(path + s); の部分を任意に書き直せば、目的の処理が可能でしょう。 void TForm1::ListFile(AnsiString path) { WIN32_FIND_DATA fd; HANDLE hFind = FindFirstFile((path + "*").c_str(), &fd); if (hFind != INVALID_HANDLE_VALUE) { do { AnsiString s = (AnsiString)fd.cFileName; if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if (s != "." && s != "..") { ListFile(path + s + "\\"); } } else { ListBox1->Items->Append(path + s); //ここに処理を入れる } } while(FindNextFile(hFind, &fd)); FindClose(hFind); } } |
Q11. ファイルの存在の確認方法(その1) |
ファイル有無の確認はaccess関数を利用する #include |
Q12. ファイルの存在の確認方法(その2) |
ヘッダーファイルに追加 #include |
Q13. 指定されたディレクトリが存在するかどうか調べるには? |
ヘッダーファイルに追加 #include |
Q14. ヘルプファイルを起動するには?/td> |
ヘルプファイルの起動 ヘルプファイルがアプリケーションと同じディレクトリにある場合: AnsiString HelpName = ExtractFilePath(Application->ExeName) + "help.hlp"; ShellExecute(Form1->Handle,NULL,HelpName.c_str(),NULL,NULL,SW_SHOW); |
Q15. パラメータ(引数)を取得するには? |
ParamCount関数・・・・・コマンドラインパラメーターの個数 ParamStr(0) 〜 ParamStr(ParamCount-1)までが有効なコマンドラインパラメータ コマンドライン全体・・・・CmdLine変数(Char *)に渡される |
Q16. C++ Builder内からアプリケーションを実行するには? |
WinExec関数を利用する (例) WinExec("test.exe",SW_SHOWDEFAULT); |
Q17. 設定ファイル(.ini)を作成するには? |
Unit1.hファイルの先頭に以下を追加 #include |
Q18. 動的リンクライブラリを利用するには? |
1.DLL のインポートライブラリを作成する NKF32.DLLを利用する場合: IMPLIB NKF32.LIB NKF32.DLL 2.作成されたライブラリファイルをメイクファイルのALLLIBに追加する メイクファイルの表示 [表示] - [プロジェクト メイクファイル] 3.ヘッダーファイルの編集 NKF32.Hを編集する extern "C" _declspec(dllimport)を追加する void CALLBACK GetNkfVersion(LPSTR); ↓ extern "C" __declspec(dllimport) void CALLBACK GetNkfVersion(LPSTR); 4.ヘッダーファイルを追加する Unit1.cppにNKF32.Hを追加する 5.NKF32.DLLをSYSTEMディレクトリ、またはプログラムのあるディレクトリに置く。 |
Q19. FormCreate内でプログラムを終了するには? |
FormCreaate内では Close( );では終了することができない。 Application->Terminate( ); で終了する。 |
Q20. TStringListの配列について |
方法1 ポインタの配列を使う //確保 TStringList **mString = new TStringList*[MyCounter]; for(int i=0; i |
Q21. 起動時にフォームを表示しないプログラムを作成するには? |
「表示」メニューで「プロジェクトソース」を選び、コードエディタにプロジェクトソースが 表示されるようにする。 WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize( ); Application->ShowMainForm = false; //これを追加 Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; ] |
Q22. 配布可能なプログラムを作成するには? |
以下の設定を行ないます。 [プロジェクト] - [オプション] - [パッケージ] - [実行時パッケージを使って構築] チェックをはずす [プロジェクト] - [オプション] - [リンカ] - [リンク] - [ダイナミックRTLを使用] チェックをはずす |
ImageListから画像を抽出するには? |
// Bitmapの定義 Graphics::TBitmap *bmap; bmap = new Graphics::TBitmap; TRect Src,Dest; // ImageListから画像を取り出す ImageList1->GetBitmap(0,bmap); // 画像のサイズを設定 Src = Rect(0,0, bmap->Width,bmap->Height); Dest = Rect(0,0,bmap->Width,bmap->Height); Image1->Width = bmap->Width; Image1->Height = bmap->Height; // 画像のコピー Image1->Canvas->CopyRect(Dest, bmap->Canvas, Src); // クラスの解放 delete bmap; |
Q24. ファイル名を指定して実行するには? |
ヘッダファイルに指定する #include |