不足ファイル3 を解決するには?

解決


パンダ  2005-11-03 00:35:13  No: 92390

過去ログにあった質問と全く同じ内容の質問です。
http://madia.world.coocan.jp/vb/vb_bbs/200212_02120020.html

過去ログの回答のリンク先のBBSには
その時期のログが消えてしまっております。

VB6.0にて、ディストリビューション・ウィザードで
VBScriptをVBに正しく参照させるにはどうすればよいでしょうか?


もげ  2005-11-03 02:00:46  No: 92391

たしか、depファイルを手で書き換えればOKとの説もあるのですが、
VBScript(WSH)に関しては、IE(OS?)のバージョンに依存すること、また、
一部ファイルだけ配布して書き換えてしまうと、DLL間で不整合を起こす恐れがある
ことから、

・配布時には参照設定は外してレイトバインドにする。
・IE5以上をプログラムの動作条件として謳っておく。
・IEやWSHとして別途配布を行うこととし、ディストリビューションウィザード
  による配布ファイルには含めない。

のが推奨されるかと思います。
WSHはここから入手できます。
http://www.asia.microsoft.com/japan/msdn/scripting/default.asp


パンダ  2005-11-03 15:43:41  No: 92392

もげさんご回答ありがとうございます。

しかし、正規表現での検索にMatchCollectionやMatchを使用しています。
参照設定をしないレイトバインドで
Dim objRegExp As New RegExp

Dim objRegExp As Object
Set objRegExp = CreateObject("VBScript.RegExp")
となりますが、

Dim mc  As New MatchCollection
Dim mt  As New Match
をCreateObjectする方法がわからないのですがご教授願えますでしょうか。
同じVBScript_RegExp_55のメンバなので
CreateObject("VBScript.MatchCollection")
で良いのかと思いきや、エラーとなってしまいます。


パンダ  2005-11-03 15:52:04  No: 92393

すみません。

Dim mc  As New MatchCollection
Dim mt  As New Match
  ↓
Dim mc  As MatchCollection
Dim mt  As Match

の間違いです。


もげ  2005-11-03 17:18:55  No: 92394

Dim mc  As Object
Dim mt  As Object
または、
Dim mc  As Variant
Dim mt  As Variant
でダメですか?


もげ  2005-11-03 17:28:51  No: 92395

ちなみに、当方はこのサンプルで動作確認済みです。

'[HOWTO] Microsoft Visual Basic 6.0 で正規表現を使用する方法
'http://support.microsoft.com/default.aspx?scid=kb;ja;818802
'レイトバインド化 by もげ
Private Sub Command1_Click()
    MsgBox (TestRegExp("is.", "IS1 is2 IS3 is4"))
End Sub
Function TestRegExp(myPattern As String, myString As String)
   'オブジェクトを作成します。
   Dim objRegExp As Object
   Dim objMatch As Object
   Dim colMatches   As Object
   Dim RetStr As String

   ' 正規表現のオブジェクトを作成します。
   Set objRegExp = CreateObject("VBScript.RegExp")
   'Pattern プロパティを使用してパターンを設定します。
   objRegExp.Pattern = myPattern
   ' 大文字、小文字を区別するかどうかを指定します。
   objRegExp.IgnoreCase = True
   ' 全文検索か、最初の一致のみの検索かを指定します。
   objRegExp.Global = True
   ' 文字列に指定したパターンが存在するかどうかを確認します。
   If (objRegExp.Test(myString) = True) Then
   ' 一致する文字列を取得します。
    Set colMatches = objRegExp.Execute(myString)   ' 検索を実行します。
    For Each objMatch In colMatches   ' colMatches を繰り返し実行します。
      RetStr = RetStr & "Match found at position "
      RetStr = RetStr & objMatch.FirstIndex & ". Match Value is '"
      RetStr = RetStr & objMatch.Value & "'." & vbCrLf
    Next
   Else
    RetStr = "String Matching Failed"
   End If
   TestRegExp = RetStr
End Function


パンダ  2005-11-04 00:50:07  No: 92396

もげさん、ご回答ありがとうございます。
直ぐには試すことできないので後で検証してからご報告させていただきますが、取り急ぎお礼申し上げます。


パンダ  2005-11-04 02:06:19  No: 92397

Dim mc  As Object
Dim mt  As Object

で解決できました!
ありがとうございました!


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

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






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