コラム / バイナリエディタ / 24



いよいよあとちょっとです。
読み取ったテキストを数値に変換したので、
ファイルストリームに書き込んでいきましょう。
//ファイルにバッファを書き込む
の ところにコードを追加します。
//ファイルにバッファを書き込む
FS.Write(buf,1);
これだけ。
WriteはReadの逆をするだけです。
第一引数の変数から第二引数バイト、ファイルストリームに書き込む
というわけ。
bufには1バイト分が入ってるので、当然第二引数は1ですな。
ファイルストリームには、
最後に実行する処理とかとくにありません。
書き込みたいだけWriteを実行したら、
Freeしてしまえば、勝手にファイルができています。
よし、やっとSaveBinText手続きが完成しました!
覚えているかな? 呼び出す部分を作りましょう。
メニュー>上書き保存 をクリック
procedure TForm1.Save1Click(Sender: TObject);
begin
    if FilePath='' then begin
        SaveAs1Click(Sender);
    end else begin
        //共通保存処理
    end;
end;
を、
procedure TForm1.Save1Click(Sender: TObject);
begin
    if FilePath='' then begin
        SaveAs1Click(Sender);
    end else begin
        //共通保存処理
        SaveBinText(FilePath);
    end;
end;
とするだけ。
FilePathは、ファイルを開く をしたときに代入されるので、
上書き保存 のときは、値をキニシナイでそのまま使えばおkです。
次は、名前をつけて保存をクリック
procedure TForm1.SaveAs1Click(Sender: TObject);
begin
    if not SaveDialog1.Execute then exit;
    FilePath:=SaveDialog1.FileName;
    //共通保存処理
end;
もうわかると思いますが、
procedure TForm1.SaveAs1Click(Sender: TObject);
begin
    if not SaveDialog1.Execute then exit;
    FilePath:=SaveDialog1.FileName;
    //共通保存処理
    SaveBinText(FilePath);
end;
こうしてください。
これで完成!!!!
といいたいところですが、
まだ、
新規作成 とか 終了 の時の
「ファイルが変更されています 終了していいですか?
 はい | いいえ | キャンセル」
がありませんね。
それは次回。
開く→書いたり消したり→上書き保存/名前をつけて保存
は、もうできるようになってるので、
触りたいバイナリファイルがある人はどうぞ。