・Delphiでファイル/フォルダ容量を合計するツールを作ってみた2007/10/12 20:03

ここしばらくDelphiでプログラムを作る練習をしていたのだが、そろそろツールを作ってみるかということで、VB6で作ったツールをDelphで作り直してみることにした。

そのツールというのは「TotalSize」という名前で、ドロップしたファイルやフォルダの容量を合計して表示するという簡単なものだ。世の中にはフォルダ容量表示をExplorerに付加するツールなどもあるのだが、容量合計を知るには結局プロパティを表示しなければならなかったりするのでまどろっこしい。あと、いろんなフォルダをDVD-RAMに保存するとき、DVD-RAMに収まる任意のフォルダの組み合わせとかを探したいのだけれど、そんな機能を持ったツールはない。しょうがないので自分で作ってみたのだが、酢こんぶ以外に需要はないかと思ったので公開はしていない。

というようなツールをDelphiで作り直してみてわかったのは、VB6とDelphiとで一長一短だなあということ。

Delphi版の短所

1)遅い!(^_^;

状況によるが、VB6版の3倍くらい遅い。原因はわかっていて、VB6ではフォルダ容量をひとつのコマンドで取得できるのだが、Delphiにはそういうコマンドはないので、フォルダ階層をたどりながらファイル容量を順次計算していくしかない。Windowsの情報がいくらでも入手できるVB6開発チームは最速でフォルダ容量を取得する方法(キャッシュを見に行くとか)を知っているのでちまちま計算するよりずっと速い、、、のではないかと予想。ということはDelphi版がスピードで勝てるわけないので解決策無し。orz

2)でかい!(^_^;

VB6版はEXEファイルの容量が30KB以下。かたやDelphi版は500KB強という圧倒的なでかさ。Delphi版がランタイムライブラリなしに動作することを考えればしかたないのかもしれないが、、、、、。

Delphi版の長所

a)ファイルドロップ時にExplorerをフックしない。

VB6版ではツールにファイルをドロップすることで処理を開始させると、その処理が終了するまで、ファイルをドラッグしたExplorerをフックして無反応にさせてしまう。これでは使い勝手が悪いので、ファイルドロップ後に実行ボタンを押すという操作にしているのだがやはりまどろっこしい。これがDelphi版ではExplorerをフックしないので余分な処理をする必要がない。

b)途中でキャンセルができる。

VB6版はワンコマンドでフォルダ容量を取得するので、容量を取得するのに時間がかかるフォルダ(階層が深かったりファイル数が多かったりするフォルダ)の処理を途中で止めようと思ってもできないし、ツール自体が無反応になってしまう。Delphi版は自分でルーチンを書いているので、遅いという欠点はあるもののいつでもキャンセルできるし、無反応になることもない。


ということなのだが、酢こんぶ的にはDelphi版のメリットはデメリットを圧倒的に上回っているのでDelphi版を使っていこうと思う。

最初Delphiを使い始めたときは、その厳格な言語仕様が使いにくいと思わなかったでもないのだが、いいかげんなプログラムでもなんとか動くものを作れてしまうVB6に比べて、自分自身のスキルを自然に高めることができるという点で、Delphiがだんだん好きになっていく気がする。

------------------------------------------
このブログの本店「木全屋かるた堂」もよろしくです。

・ファーストガンダムのかるた売ってます。
・ファイル整理に便利な自作ツール置いてます。
・写真(コスプレ、ポートレート、動物)公開してます。
------------------------------------------

コメント

_ upsv ― 2007/10/17 19:24

はじめまして。
本記事を見て久しぶりにプログラミングをしようと思いました。
Delphi Explorerをdownloadして使えるようにしました。
結構しんどかったです。
一応使えるようになりましたが、インターフェースはVisural Basicと同じような感じですね。
何か作ってみようと少しずつやり始めました。
何かできたらお知らせしようと思います。

_ 酢こんぶ ― 2007/10/18 09:54

コメントありがとうございます。
私ははっきり言ってド素人なので、変なこと書いてるんじゃないかと
冷や汗ものです。(^_^;

間違ったこと書いてたら遠慮なく指摘してくださいね。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
このブログはxxの思考錯誤日記です。
xxの部分をお答えください。

コメント:

トラックバック

このエントリのトラックバックURL: http://karutadou.asablo.jp/blog/2007/10/12/1850062/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。