2

私は、Visual Basic 6 で記述されたいくつかのレガシー ActiveX DLL を変更する任務を負っています。私がする必要があることの 1 つは、"ScriptingContext" オブジェクトをエミュレートすることです (これにより、IIS 以外の DLL を実行するための他のメカニズムをサポートすることができます)。コードの大部分を書き直すため)。

私に悲しみを引き起こしているのは、「ASPTypeLibrary.Application」オブジェクトです。これには、格納された値にアクセスするための2つの非常に異なる方法があります。

 .Application("KeyName")

また

 .Application.Value("KeyName")

これらのアクセス メカニズムの両方をサポートする独自の VB6 クラスを作成するにはどうすればよいですか? どちらか一方はできますが、両方はできませんか?

(簡単なコード例は素晴らしいです、私はVB6プログラマーではありません)

4

3 に答える 3

0

「.Request.QueryString」プロパティにアクセスするための 3 つの異なる方法を持つ ScriptingContext の「ASPTypeLibrary.Request」オブジェクトに関する追加の質問に答えることができました。

「ASPTypeLibrary.Application」オブジェクトに対する以前の回答のコードに基づいたコード スニペットを以下に含めました。「clsContextApp」クラスに新しいプロパティを追加し、それをそのクラスのデフォルト プロパティにすると、「.Application」プロパティが修飾なしで呼び出されたときに呼び出されます。

MyString = Context.Application

VB6 で特定のプロパティを既定のプロパティとして設定するのは少しわかりにくいですが、ここで見つけた指示に従いました。

' clsContextApp Default Property
Property Get Values(Optional ByVal Index As Integer = -1) As String  ' This is the Default Value for clsContextApp
Attribute Values.VB_UserMemId = 0
 Dim KeyName As String, Value As String

 Values = ""

 If (Index < 0) Then
  For Index = 0 To p_Application.Count - 1
   KeyName = p_Application.Keys(Index)
   Value = p_Application.Item(KeyName)
   If (Index > 1) Then
    Values = Values + "&"
   End If
   Values = Values + KeyName + "=" + Value
  Next Index
 Else
  If (Index < p_Application.Count) Then
   KeyName = p_Application.Keys(Index)
   Value = p_Application.Item(KeyName)
   Values = KeyName + "=" + Value
  End If
 End If
End Property
于 2013-04-13T02:39:08.623 に答える
0

Microsoft Active Server Pages Object Library および COM+ Services Type Library への参照を追加し、オブジェクト ブラウザーを使用すると、欠けていると思われるいくつかの基本的なことが明らかになります。

GetObjectContextCOMSVCSLib のグローバル メソッドであり、現在の ObjectContext を戻り値として取得するために使用される引数はありません。

ObjectContextクラスです。これには、String 引数を取り、Variant 型の Item という名前の読み取り専用のデフォルト プロパティがあります。

"Application"引数として渡すとItem、アプリケーション クラスの現在のインスタンスが返されます。

ScriptingContextクラスです。時代遅れです。

Application別のクラスです。これには、String 引数を取り、Variant 型の Value という名前の既定のプロパティがあります。

Valueアプリケーション クラスのプロパティであり、キーが常に文字列である読み取り/書き込みキー/値ペア ストアへのアクセスを提供します。Variant 型であるため、オブジェクトだけでなく、さまざまな型の単純な値や配列も格納できます。

これはどれも、VB6 で複製するのが難しいようには見えません。キー/値ストアは Collection または Scripting.Dictionary の可能性があります。

于 2013-04-13T13:04:33.340 に答える