拡張子を振り分ける定番手法は?

解決


武田  2005-08-16 08:33:01  No: 17080

皆様いつもお世話になっております。また、この掲示板のレベルを下げるような質問をすることをお許し下さい。
サイトからファイルをダウンロードするプログラムを作成しております。
ロードして取得したファイルの拡張子を
kakutyosi:= AnsiStrRScan(PChar(FileName + #0), '.')で取得して次のグループにあるか、そして、拡張子の名前を取得したい場合、定番の手法をご指導頂きたいのです。
(.mpg, .mp3, .avi, .zip, .lzh, .wmv, .mpeg, rm,)
ダウンローダーによくあるように、スイッチにより、今回は圧縮ファイル.zip, .lzhは除外したい場合もあります。もし列挙型で定義している場合
type kaku = (.mpg, .mp3, .avi, .zip, .lzh, .wmv, .mpeg, rm,);
途中でテーブル内容をくるくる変更できるのでしょうか。
今は、if kakutyosi = '.mpg' then ・・・・や
if AnsiPos(kakutyosi, '.mpg, .mp3, .avi')<>0 then ・・・のような処理をしています。
説明がうまくできませんが、どうぞよろしくご指導をお願いいたします。


DBOX  2005-08-16 09:55:09  No: 17081

Irvine
http://hp.vector.co.jp/authors/VA024591/
IrvineというDL用ツールのソース
options.pasのClipMonitorExtやClickMonitorExtが
それらしいように思えます。
さらに追っていくと
irc_iebrowserhelperobject.pasや
irc_ienamespacehandler.pasで
レジストリから
extensions.Text := ini.ReadString(_BROWSER,__CLICKMonitorExt,'');
と拡張子を読み込み、
//拡張子チェック
ext := ExtractFileExt(ui.FileName);
//すべてチェック
  if (ssCtrl in ss) and (ssAlt in ss) then
    ok := True
  else if alt then
    ok := (ssAlt in ss) and (match or (extensions.Match(ext) > -1))
  else
    ok := match or (extensions.Match(ext) > -1);

よく分からなくて申し訳ないのですが、たぶんここがそうだと思います。


武田  2005-08-17 19:07:58  No: 17082

DBOXさん、早速のご指導ありがとうございます。
いろいろトライしましたが、まだ私にはかなり難解ですが、めげずにやってみます。
サイトのファイルのダウンロードそのものは簡単ですが、その後の処理はもう大変だと言うことが解りました。
htmlファイルをDLし、その画像をDLし、このhtmlファイルを表示させるというのはhtml文の書き方がまちまちでなかなか大変ですね。
Irvineは長年使わせて頂いていますが今更ながら高度な処理に敬服します。勉強します。ありがとうございました。
また、教えて下さい。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加