--------(--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2010-05-22(Sat)

《BCB(C++ Builder)》Filectrlのリンク時エラー対処法

FileCtrl.hppをインクルードしたプロジェクトに対して、「実行時パッケージを使って構築」のチェックを外して構築を行った際にリンカエラーを起こすことがあります。
以下の手順でエラーに対処できます。

(1)「オプション」→「リンカ」→「共有 RTL DLL を使う」のチェックを外す。
(2)対象のプロジェクトを一度閉じて、"プロジェクト名.bpr"をテキストエディタ等で開き、<SPARELIBS value="*****"/>の項目を探す。****に半角空白で区切り「VCLX50.lib」と記入して保存。
(3)プロジェクトを開いて再構築

これでエラーがなくなるはずです。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

2010-05-22(Sat)

《BCB(C++ Builder)》FormCreate内でアプリケーションを終了する

FormCreateイベント内ではClose()でアプリケーションを終了することができません。
終了したい場合はApplication->Terminate()を使用すれば終了できます。
2010-05-09(Sun)

《BCB(C++ Builder)》ディレクトリ内のファイル一覧を取得する

適当なイベントを受けてフォルダ内のファイル一覧をリストボックスに書きだします。
また、書き出す際にディレクトリとファイルの判別を行います。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TSearchRec Sr;  //TsearchRec型の変数を用意
  AnsiString path = Form1->Edit1->Text + "\\*.*";  //Edit1に入力されたパスを設定し、ディレクトリ探査用に"\\*.*"を結合
  int Attributes = faAnyFile;  //ファイルの属性を設定

 Form1->ListBox1->Items->Clear();  //ListBoxの内容を一度クリアする

 if(FindFirst(path, Attributes, Sr) == 0){
   do {
    if((Sr.Attr & Attributes) == Sr.Attr) {      //Attributesと設定した属性か判定
     if((Sr.Attr & faDirectory) == faDirectory){  //ディレクトリかどうか判定
      if(Sr.Name != '.' && Sr.Name != "..")      //"."、".."ディレクトリの回避
       ListBox1->Items->Add("[dir] "+Sr.Name); //ディレクトリの処理
      }else{
       ListBox1->Items->Add(Sr.Name);       //それ以外(ファイル)の処理
      }
    }
   }while (FindNext(Sr) == 0);
  FindClose(Sr);
  }
}


<説明>
TSearchRec Sr;
 ファイル情報を定義する構造体TSearchRecを宣言します。

int Attributes = faAnyFile;
 検索したいファイルの属性を指定する。指定できるファイルの属性は以下の通り。
  faRadOnly・・・読み出し専用ファイル
  faHiden・・・非表示ファイル
  faSysFile・・・システムファイル
  faVolumeID・・・ボリュームファイル
  faDirectory・・・ディレクトリファイル
  faArchive・・アーカイブファイル
  faAnyFile・・・すべてのファイル

"\\*.*"
 指定されたパスの"内部"にある全てのファイルを探索するために指定する。なお、この指定をしなくてもこの次に出てくるFindFirstの第一引数で、例えば"C:\\*.*"と直接指定してもよい。

if(FindFirst(path, Attributes, Sr) == 0){
 FindFirst関数はファイルの検索に成功した場合は0を、失敗した場合はエラーを返すためにif文で処理を決定する。
 FindFisrt関数の第一引数はAnsiString型で検索するパス・名前を指定する。全てのファイルの場合は*.*とする。第二引数はAttributesで指定した属性。第三引数は検索レコードを受け取る変数を指定する。

if((Sr.Attr & Attributes) == Sr.Attr) {
 取得した属性と視程した属性が一致しているか判定する。

if((Sr.Attr & faDirectory) == faDirectory){
 同様に取得した属性がディレクトリかどうか判定する。

if(Sr.Name != '.' && Sr.Name != "..")
 取得したファイル名が"."".."であるか判定する。

while (FindNext(Sr) == 0);
 FindFirstで指定したものと同じパス・名前、属性に一致する次のエントリを検索して引数に返す。エントリが見つかった場合は0を返し、見つからなかった場合はエラーを返すため、do-while式を用いて処理をループさせればディレクトリ内部の探査ができる。

FindClose(Sr);
 クローズしてメモリを開放する。

テーマ : プログラミング
ジャンル : コンピュータ

カテゴリ
検索フォーム
RSSリンクの表示
リンク
お問い合わせ

名前:
メール:
件名:
本文:

ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。