• 締切済み

【VB6.0】DictionaryのAddが遅い

VB6.0で次のようなコーディングをしています。 Dim FNmDic As Variant Dim HelpFile As File Set FNmDic = CreateObject("Scripting.Dictionary") FNmDic.Add Left(HelpFile.Name, 3), HelpFile.Path このFNmDic.Addに2秒もかかってしまいます。 HelpFileは、先頭3文字が数字のファイルを指しており、キーの役目をしています。 HelpFileがローカルにあるファイルをさしている場合は、遅くないのですが、 ほかの端末の共有フォルダにあるファイルを指すとAddが遅いです。 また、この現象はエンドユーザの環境で発生し、私の開発環境では発生していません。 Addを1秒以下にしたいのですが、何か解決の糸口はあるでしょうか?

みんなの回答

  • x-1919
  • ベストアンサー率52% (91/173)
回答No.2

「Dim HelpFile As File」 が FileSystemObject の File であるなら Microsoft Scripting Runtime への参照設定がされていると思うので Dim FNmDic As Variant Set FNmDic = CreateObject("Scripting.Dictionary") を Dim FNmDic As Scripting.Dictionary Set FNmDic = New Scripting.Dictionary とすることができる。 ここからが本題。 FNmDic.Add Left(HelpFile.Name, 3), HelpFile.Path この 1行に時間が掛かっているとして、それが Scripting.Dictionary のせい (FNmDic.Add) なのか、Scripting.File のせい (HelpFile.Name や HelpFile.Path) のせいなのか、それとも両者をこの書き方にすると遅くなるのか、切り分けてみたらよいともいます。 Dim fso As Scripting.FileSystemObject Set fso = New Scripting.FileSystemObject Dim HelpFile As Scripting.File Set HelpFile = fso.GetFile("ファイル パスの文字列") Dim hKey As String Dim hValue As String hKey = Left(HelpFile.Name, 3) hValue = HelpFile.Path Dim FNmDic As Scripting.Dictionary Set FNmDic = New Scripting.Dictionary FNmDic.Add hKey, hValue Add への引数に File オブジェクトを使わないようにしてみた。 hKey や hValue に値を入れる箇所が遅くなるのか、相変わらず Add が遅いのかが分かると思う。

PAN-MUGI
質問者

お礼

回答ありがとうございます。お礼が遅れ、申し訳ありません。 おっしゃる通り、根本的に何が(どこが)原因なのか切り分ける必要がありますね。 いろいろ確認してみたいと思います。ソース、参考にさせていただきます。 ありがとうございました。

回答No.1

OS や IE のバージョンにも依存するかもしれませんが http://windows.microsoft.com/ja-JP/windows-vista/Changing-intranet-security-settings の イントラネット セキュリティを使用するために、Internet Explorer で何か設定を行う必要がありますか。 で改善したことはあります。 あなたと他者の OS や IE のバージョンとそのセキュリティ設定あたりから 調べ始める必要があるかもです。 ご参考まで。

PAN-MUGI
質問者

お礼

回答ありがとうございます。お礼が遅れ、申し訳ありません。 セキュリティあたりも怪しいですね。 確認したいと思います。 ありがとうございました。

関連するQ&A