BCB一般
- Memorandoms for BCB Programming -
INIファイルを使う
アプリケーションの諸設定を次回にも有効にしたい場合には
INIファイルを使います。
- "*.cpp"の初めに以下を追加します。
//---------------------------------------------------------------------------
#include < vcl\vcl.h >
#include < vcl\inifiles.hpp >
- OnCreateイベントでINIファイルを読み込みます。
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TIniFile *theIniFile ;
theIniFile = new TIniFile(
ChangeFileExt( Application->ExeName, ".INI" ) ) ;
Folder = theIniFile->ReadString( "SETUP", "DIRSPEC", "C:\\" ) ;
Edit1->Text = Folder ;
delete theIniFile ;
}
- OnCloseイベントでINIファイルに書き込みます。
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
TIniFile *theIniFile ;
theIniFile = new TIniFile(
ChangeFileExt( Application->ExeName, ".INI" ) ) ;
theIniFile->WriteString( "SETUP", "DIRSPEC", Folder ) ;
delete theIniFile ;
}
アプリケーションのパス名を取得する
アプリケーションクラスのプロパティを参照します。
System::AnsiString Application->ExeName
アプリケーションのハンドルを取得する
アプリケーションクラスのプロパティを参照します。
HWND Application->Handle
ファイルの拡張子をかえる
残念ながらオンラインヘルプには載っていません。(/_;)
System::AnsiString __fastcall
ChangeFileExt( const System::AnsiString FileName,
const System::AnsiString Extension )
ファイルが存在するか確認する
残念ながらオンラインヘルプには載っていません。(/_;)
bool __fastcall
FileExists( const System::AnsiString FileName )
スペースキーでMemoをスクロール
void __fastcall Form1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
short y ;
switch( Key ){
case VK_ESCAPE :
//
// [ESC]でフォームを閉じる処理
//
Close() ;
break ;
case VK_SPACE :
//
// 1ページスクロール
//
y = (short)( Memo1->Perform( EM_SCROLL, SB_PAGEDOWN, 0 )
& 0x0000FFFF ) ;
//
// カーソル位置移動
//
Memo1->SelStart = Memo1->Perform( EM_LINEINDEX,
Memo1->Perform( EM_GETFIRSTVISIBLELINE, 0, 0 ),
0 ) ;
break ;
}
}
ファイルのサイズを取得(Win32API)
HANDLE theFile ;
//
// Win32 FileOpen
//
theFile = CreateFile(
FileName.c_str(), // ファイル名
GENERIC_READ, // 読込モード
FILE_SHARE_READ, // 共有モード
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_READONLY,
(HANDLE)NULL ) ;
//
// ファイルハンドル検査
//
if( theFile == INVALID_HANDLE_VALUE ){
return false ;
}
DWORD low, high ;
//
// ファイルサイズ取得
//
low = GetFileSize( theFile, &high ) ;
//
// Win32 FileClose
//
CloseHandle( theFile ) ;
ファイルの最終更新時刻を取得(Win32API)
"theFile"は上のファイルサイズを参照のこと。
TDateTime time ;
FILETIME ft, lt ;
SYSTEMTIME st ;
//
// ファイル時刻取得
//
if(! GetFileTime( theFile,
(LPFILETIME)NULL,
(LPFILETIME)NULL,
&ft ) ){
// 失敗
return false ;
}
//
// ローカル時刻計算
//
if( FileTimeToLocalFileTime( &ft, < ) != TRUE ){
// 失敗
return false ;
}
//
// システム時刻計算
//
if( FileTimeToSystemTime( <, &st ) != TRUE ){
// 失敗
return false ;
}
//
// DateTime型変換
//
time = EncodeDate( st.wYear, st.wMonth, st.wDay )
+ EncodeTime( st.wHour, st.wMinute, st.wSecond, st.wMilliseconds ) ;
ご意見・ご感想がございましたら
"kkkumanomi@geocities.co.jp"
までメールをください。m(_ _)m