コラム / 置換ツールを作ろう / 10



さて、前回は長くなってきたので半端なところできってしまいました。
今度こそクリップボードのデータを読み込みますよ。
次のコードを書き足してください。
    if not clip.HasFormat(CF_TEXT) then begin
       showmessage('( ^ω^)クリップボードの中身がテキスト形式じゃないお・・・');
       exit;
   end;
   tex.Text:=clip.AsText;   //☆これ
tex.Text:=clip.AsText;
これは、一番簡単な、A:=B;って代入文ですね。
左辺に右辺を代入します。代入ってのは、コピーのことです。
二つとも.が付いてるので、日本語で読むと、
texのTextプロパティーに、clipのAsTextプロパティーを代入せよ。
ってことになります。
texはTStringListでした。TStringListのTextプロパティーは、
「複数行文字列の、文字列リスト」を、「改行コード区切りの文字列として扱う」のです。

kaigyou.png

clipはTClipboardですから、TClipboardのAsTextプロパティーの意味を見ると、
「クリップボードの内容を文字列として表します」とあります。
クリップボードには複数行がコピーされることもありますから、
それを(文字列リストではなくて)文字列として表す、ってことは、
「改行区切りの文字列」ってことですね。
これで両辺の型が同じ「文字列型」となりました!
そしてめでたく代入できるわけです。
ってことは、置換したあとのデータをクリップボードに入れる方法もわかりますね。
そこまでコードを書いちゃいましょう。
procedure TForm1.Button1Click(Sender: TObject);
begin
    if not clip.HasFormat(CF_TEXT) then begin
        showmessage('( ^ω^)クリップボードの中身がテキスト形式じゃないお・・・');
        exit;
    end;
    tex.Text:=clip.AsText;
    //ここに置換処理が入る
    clip.AsText:=tex.Text;
end;
もうすぐ完成!
ところで、//ここに置換処理が入る というのはなんだと思いますか?
これ、コメントといって、プログラムでは無視される部分のことです。
//とスラッシュを二つ書いた行は、以降コメントになります。
{と}で括った部分は、複数行でもコメントになります。
だから・・・
//ボタンがクリックされたときのイベントの中身
procedure TForm1.Button1Click(Sender: TObject);
begin
    {
     クリップボードの中身をテキストかチェックした後、
     中身を文字列リストに保存し、
     置換した後
     再びクリップボードに上書きする処理です
    }
    //もし、 clipのフォーマットがテキスト ではない ならば
    if not clip.HasFormat(CF_TEXT) then begin
        //警告を表示して
        showmessage('( ^ω^)クリップボードの中身がテキスト形式じゃないお・・・');
        //手続きを終わる
        exit;
    end;
    //ここに来たということはフォーマットがテキストだったということなので
    //texにクリップボードテキストをうつし
    tex.Text:=clip.AsText;
    //ここに置換処理が入る
    //再び戻す
    clip.AsText:=tex.Text;
end;
これもちゃんとコンパイルできます。
コメントをたくさんつけるとあとでわかりやすくていいです。
こんなにつけると逆にごちゃごちゃするけど。
さぁ、いよいよ次は置換処理ですよおおおおおおおお