[BlueLeaf1336]> PROBLEMS> リンクタグ作成 HrefBuilder>

リンクタグ作成 HrefBuilder > Try&Error

historyTOP

2005/09/08:作成

overviewTOP

ここからはしょぼしょぼと修正していきます。このページは上になるほど新しくなります。

2009/09/07TOP

20090907_HrefBuilder_src.zip(249,844bytes) ソースコードと実行ファイルです。

2005/09/08TOP

HrefBuilder20050908.zip(217,510ytes) ソースコードと実行ファイルです。

前回、ダウンロード関数内で作成していたGETコマンドを呼びだし側で作成するように変更しました。ここまで来たら、ダウンロード関数内に準備した array[0..1024] of char に受けとったデータを、引数に指定された TStream に書き込むなんてことはせずに、function (const Buf; const BufLen: integer): Boolean な形式で指定されたコールバック関数に渡すことにしました(この関数が false を戻したらダウンロード途中でもキャンセルするようにしています)。

コレによりダウンロードはかなり自由になりました。というのは呼びだし側は当然何か(単純なダウンロードではない何か)をしたいがために、この関数を呼び出すので、たとえば "<body" 以降はいらないなんていう限定的な条件を付けたくなって当たり前です。コールバックにすることで、そこそこ使いまわせるダウンロード関数側に、そんな嫌過ぎる判定を書く必要がなくなったわけです(エラそう)。

呼びだし側で、どれだけ特殊なことをやってもダウンロード側がサーバに終了!といわれるか、呼びだし側の気まぐれキャンセルだけを判定してひたすらダウンロードに専念できるわけで。

なんていくら説明しても、もしみたい人がいればソース見るほうが早いでしょうし、わかる人はこんな説明読まないだろうからこのへんで。ただ、リンクタグ作成処理としては、実際ページのデータを最後まで読む必要はないので、先の例「"<body" 以降はいらない」という判定条件をかませることで、(多分)高速化できました。

※今日からもしくは今日だけ、半角単語は太字にしてみることにします。かなり以前に「文字列の操作」を読んで確かにその方がヨイカンジだなと。やっぱ1バイト単語は太字でしょう、と突然のブームです。よくよくそのページをみると太字にしたい単語の前後にスペースを挟んでいるようです。まぁこっちは「手動で」やっているのでやりたいようにやれるので問題ありません。でも、(VBScript 版なんでへなちょこサイドですが)せっかく正規表現がホットなんで、「タグをよけながら本文中の1バイト単語を太字にする何か」を作ってみようと思ってみたりして。

EOFTOP