C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VB6のKillステートメントが推奨されない理由


(過去ログ 20 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■8710 / inTopicNo.1)  VB6のKillステートメントが推奨されない理由
  
□投稿者/ Asarima (1回)-(2007/10/08(Mon) 20:49:30)

分類:[VB6 以前] 

Asarimaです。

最近、VB6にてKillステートメントの実行時にエラーが発生する問題に遭遇しました。削除しようとしたファイルは読み取り専用属性は付けておらず、他のプログラムからロックしたりしていません。
いろいろ調べたところ、じゃんぬねっとさんの以下のページでKillステートメントのご説明に「お勧めしません」とありました。何か、Killステートメントに既知の不具合があるということで、そう書かれているのではないかと思いましたので、よろしければ是非、推奨できない理由を教えていただければ助かります。
http://jeanne.wankuma.com/tips/vb6/file/delete.html
実は、他のページで(今はurlを提示できません。必要なら探して提示します)「エクスプローラでファイルの一覧を表示しているとき、エクスプローラはファイルの詳細情報を取得するために一時的なロックを獲得する」と誰かが書いているのを発見しました。このことが真実なら、それがお勧めできない理由の一つに当たるのではないかとも思います。

ご回答いただければ嬉しいです。よろしくお願いいたします。
引用返信 編集キー/
■8779 / inTopicNo.2)  Re[1]: VB6のKillステートメントが推奨されない理由
□投稿者/ ちゃっぴ (69回)-(2007/10/09(Tue) 23:28:28)
ちゃっぴ さんの Web サイト
私も推奨していません。

というよりも VBA.FileSystem class が大嫌ってのもあるんですが。
理由はというと、

1. VBA.FileSystem class は Unicode に対応していない

2. 256 Byte を超える path を扱えない

3. Dir function の実装がひどい
File search handle を掴んだまま離さない。
OOP ってゆうか object 使わないとこういうところで問題発生することの典型。
まあ、こちらは VBA.FileSystem class のみ使用していれば問題無いんですが、
他のものを併用する (VBA.FileSystem class と FileSystemObject とか) と
見事にハマリます。

ということで、推奨しません。
引用返信 編集キー/
■8800 / inTopicNo.3)  Re[2]: VB6のKillステートメントが推奨されない理由
□投稿者/ Asarima (2回)-(2007/10/10(Wed) 18:59:23)
No8779 (ちゃっぴ さん) に返信
> 1. VBA.FileSystem class は Unicode に対応していない
> 2. 256 Byte を超える path を扱えない
> 3. Dir function の実装がひどい
> File search handle を掴んだまま離さない。

 なるほど、1と2は初耳です。3については「引数なしDir関数」の謎仕様の裏事情なわけですね。
推奨されない理由についてよくわかりました。

 今回の件はKillしようとしたファイルが極稀に失敗するということで上記には当てはまりません
し、自分でも書いていますが他プロセスのロックを絡めて考えると質問内容がまったく異なるので、
いったんこのスレッドは閉めます。ありがとうございました。
解決済み
引用返信 編集キー/
■8812 / inTopicNo.4)  Re[3]: VB6のKillステートメントが推奨されない理由
□投稿者/ ぽぴ王子 (271回)-(2007/10/10(Wed) 22:44:04)
…次からは自分で調べてから来てね。
考えることができないなら聞かないでね。
バーカ
引用返信 編集キー/
■8819 / inTopicNo.5)  Re[4]: VB6のKillステートメントが推奨されない理由
□投稿者/ 中博俊@管理人 (4回)-(2007/10/10(Wed) 23:49:40)
中博俊@管理人 さんの Web サイト
このコメントは偽物です。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -