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 |