概要:テキストエディタを作成し、ファイルの読み込み・保存を行う。
<作業>
・フォーム上にMemo,SaveDialog,OpenDialog,BitButton,Buttonを2個を置く。
・Button1をダブルクリック、イベントハンドラを記述
・Button2をダブルクリック、イベントハンドラを記述。
・各コンポーネントのプロパティを設定。
SaveDialog,OpenDialogについては、扱うファイルを".txt"に絞ったため、特殊な設定(Filter)が必要になる。
詳細は下記のソースおよびイベントハンドラを。
ソース
<イベントハンドラ> //--------------------------------------------------------------------------- #include#pragma hdrstop #include "Udialog.h" #include //--------------------------------------------------------------------------- #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TFileName NameOfFile; if(OpenDialog1->Execute()) { NameOfFile = OpenDialog1->FileName; Memo1->Lines->LoadFromFile(NameOfFile); } /* OpenDialog1のFilterプロパティーを設定 テキストファイルのみを読み込むよう設定 フィルタエディタを開くには 1.フォーム上に OpenDialog コンポーネントまたは SaveDialog コンポーネントを配置します。 2.そのコンポーネントを選択した状態で以下の操作のどちらかを実行します。 Filter プロパティの値列で省略記号ボタンをクリックする Filter プロパティの値列をダブルクリックする [フィルタ名]列 [ファイルの種類(T)]コンボボックスに表示したいフィルタの名前を入力します。 [フィルタ]列 フィルタを定義するワイルドカードと拡張子を入力します。たとえば *.TXT と入力すると,.TXT の拡張子を持つファイルだけが表示されます。 フィルタに複数のファイル拡張子を適用するには,それらの拡張子をセミコロン(;)で区切ります。 */ } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { char szFileName[MAX+4]; int iFileHandle; /* デフォルトの拡張子を".txt"に設定 */ SaveDialog1->DefaultExt = "txt"; if (SaveDialog1->Execute()) { /* 同名のファイルが既存すればバックアップを取って上書き */ if (FileExists(SaveDialog1->FileName)) { fnsplit(SaveDialog1->FileName.c_str(), 0, 0, szFileName, 0); strcat(szFileName, ".BAK"); RenameFile(SaveDialog1->FileName, szFileName); } iFileHandle = FileCreate(SaveDialog1->FileName); // 書き込む。MemoのTextプロパティーで内容、サイズを取得できる。 FileWrite(iFileHandle,Memo1->Text.c_str(),Memo1->Text.Length()); FileClose(iFileHandle); /* 書き込み形式 FileWrite(ファイル、内容、大きさ); */ } } //---------------------------------------------------------------------------