「ASP コンポーネントの基本入門と習得」シリーズのパート 1。
この間、ずっと好きなコンポーネント アプリケーションを作成することができました。
これらのチュートリアルを学習した後、好きなように独自のコンポーネントを作成できることを願っています。
各記事には関連性はないかもしれませんが、コンポーネントの作成中に発生するいくつかの問題について書いているだけです。
環境を
批判して修正する皆さんを歓迎します
: winxp+vb6+sp6+visual interdev6.0次の機能を実行する
比較的単純なコンポーネントを作成しましょう
: 2 つの数値を入力して加算し、加算された結果を返し、vb6 を開き、新しい Activex Dll プロジェクトを作成します。プロジェクト名を fCom に変更し、クラス名を fC1 に変更します。
[メニュー] -> [ツール] -> [プロセスの追加] をクリックし
、名前に [追加] を入力し、タイプとして [関数] を選択し、スコープとして [パブリック] を選択して、
次のコードを生成します。引き続き改善していきます。
プログラムコード
明示的なオプション
パブリック関数 Add(ByVal a As Long, ByVal b As Long) As Long
加算=a+b
終了機能
簡単なコンポーネントが作成されました。[メニュー]、[ファイル]、[fCom.dll ファイルの生成] の順にクリックして
、
ディレクトリ内にfCom.dll
ファイルが存在することを確認します。
Interdev はコードプロンプト機能があり、VB の IDE 環境と整合性があり、書くのに便利です。
プログラムコード
<%@ 言語=VBScript %>
<HTML>
<頭>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<本体>
<%
set obj=server.CreateObject("fCom.fC1")
'次の文に注意してください。関数には戻り値があるため、次のメソッドにそれを記述することはできません。そうしないと、IE でエラーが報告されます。
'obj.Add(3,4)
'エラーの種類:
'Microsoft VBScript コンパイラ エラー (0x800A0414)
'サブルーチンを呼び出すときに括弧は使用できません
'/xml/fc1.asp、9 行目、12 列目
'obj.Add(3,4)
'以下が正しい書き方です
薄暗い
c=obj.Add(3,4)
応答.書き込みc
%>
</BODY>
</HTML>
仮想ディレクトリを構成し、この ASP ファイルを IE で実行し、結果を取得します。 7.
最初の記事は以上です。皆さんの学習が楽しくなるように願っています。
Aspコンポーネント基礎入門と使いこなしシリーズ2
コンポーネントの登録方法
1. regsvr32 コンポーネントの絶対パスは
次のとおりです。
プログラムコード
regsvr32 c:testfc1.dll
コンポーネントは登録されていれば使用できるため、コンポーネントの場所は関係ありません。
2. COM+ コンポーネント マネージャーに登録するときに
、この登録が必要になる場合: COM+ サービスを使用した後、コンポーネントを正常に実行するには、コンポーネントを登録する必要があります。コンポーネントが regsvr32 にのみ登録されている場合は、引き続き使用できません
。
プログラムコード
set obj=server.createobject("プロジェクト名.クラス名")
次に、そのメソッド属性を呼び出します。
コンポーネントのアンインストール方法
1. regsvr32 コンポーネントの絶対パスは
次のとおりです。
プログラムコード
regsvr32 c:testfc1.dll /u
uパラメータアンチレジストレーションコンポーネント
2。 COM+ コンポーネント マネージャーでコンポーネントを削除するだけです。Asp
コンポーネント エントリとマスタリー シリーズ パート 3:
プロパティを使用して vb6 を開いて新しい Activex Dll プロジェクトを作成する
方法
。プロジェクト名を fCom に変更し、クラス名を fC2 に変更します。
[メニュー] -> [ツール] -> [プロセスの追加] をクリックし、
名前に「myName」を入力し、タイプとして属性を選択し、スコープとして「public」を選択します
。名前に Age を入力し、タイプとして属性を選択し、スコープで public を選択して、
確認して再度操作します。 名前に peopleInfo を入力し、タイプとして function を選択し、スコープで public を選択して確認します
。は次のとおりです。
プログラムコード
明示的なオプション
'属性値を保持するローカル変数はクラス内でのみ使用可能
文字列としてのプライベート mvarmyName
整数としてのプライベート mvarAge
'属性の書き込み (属性の書き込み: このプロセスは属性に値を割り当てます。)
Public プロパティ Let Age(ByVal vData As Integer)
mvarAge = vData
終了プロパティ
'読み取り属性の取得 (このプロセスは属性の値を取得します。)
Public プロパティ Get Age() As Integer
年齢 = mvarAge
End プロパティ
Public プロパティ Let myName(ByVal vData As String)
mvarmyName = vData
End プロパティ
Public プロパティ Get myName() As String
myName = mvarmyName
End プロパティ
Public Function peopleInfo() As String
peopleInfo = "名前: " & mvarmyName & " 年齢: " & mvarAge
終了機能
簡単なコンポーネントが作成されました。[メニュー]、[ファイル]、[fCom.dll ファイルの生成] の順にクリックして
、
ディレクトリ内にfCom.dll
ファイルが存在することを確認します。
Interdev はコードプロンプト機能があり、VB の IDE 環境と整合性があり、書くのに便利です。
プログラムコード
<%@ 言語=VBScript %>
<HTML>
<本体>
<%
set obj=server.CreateObject("fCom.fC2")
薄暗い
' ここで呼び出されるものはコンポーネントの Let プロパティです
obj.myName="竜巻"
オブジェクト年齢 = 20
c=obj.peopleInfo()
応答.書き込みc
' ここで呼び出されるのはコンポーネントの Get プロパティです
応答。「<br>」と書いてください。
Response.Write obj.myName
応答。「<br>」と書いてください。
Response.Write obj.Age
%>
</BODY>
</HTML>
仮想ディレクトリを設定し、この ASP ファイルを IE で実行すると、結果は次のようになります。
名前: Tornado 年齢: 20。
竜巻
20
つづく
Asp コンポーネント初級入門と習得シリーズ 4
配列の問題
プログラムでは配列が頻繁に使用されますが、配列は問題を引き起こす可能性が高くなります。vb6
を開いて新規作成してみ
ましょう
。ActiveX DLL プロジェクト。プロジェクト名を fCom に変更し、クラス名を fC4 に変更します。
[メニュー] -> [ツール] -> [プロセスの追加] をクリックし、
名前に AcceptArray1 を入力し、タイプとしてサブルーチンを選択し、範囲としてパブリックを選択して、
操作を再度確認します。名前に AcceptArray2 を入力し、タイプとして関数を選択し、スコープとして public を選択して確認します。
プログラムコード
'機能: 配列アドレスをコンポーネントに渡し、ByRef キーワードを使用して割り当てて返します。
Public Sub AcceptArray1(ByRef varray As Variant) As Variant
varray(0) = "トルネード"
varray(1) = "20"
End Sub
'関数: 文字列配列を返す
バリアントとしてのパブリック関数 AcceptArray2()
Dim a(2) をバリアントとして使用
a(0) = 「竜巻」
a(1) = "20"
AcceptArray2=a
の終了
[メニュー]->[ファイル]->[fCom.dll ファイルの生成] をクリックして、
ディレクトリに fCom.dll ファイルが存在することを確認し、
visual interdev6.0 をテスト
して、asp ファイル
プログラム コードを生成します。
<%@ 言語=VBScript %>
<HTML>
<本体>
<%
薄暗いオブジェクト
set obj =server.createobject("fCom.fC4")
薄暗い(2)
'最初のコンポーネントメソッドをテストします
obj.AcceptArray1(a)
応答.write a(0)
応答.write "<br>"
応答.書き込み(1)
応答.write "<br>"
' 2 番目のコンポーネントのメソッドをテストします
薄暗いb
b=obj.AcceptArray2()
i=0 から ubound(b) まで
応答.書き込み b(i)
応答.write "<br>"
次
%>
</BODY>
</HTML>
仮想ディレクトリを構成し、この ASP ファイルを IE で実行すると、結果は次のようになります
。
20
竜巻
20
要約すると、
文字列と数値は値によって渡されるか、戻り値として返されます。
参照によって渡す場合は、パラメータの型を Variant に設定します。こうすることで、いくつかの間違いを避けることができます。ただし、参照によって渡されるパラメーターをできる限り減らすようにしてください。ASP
コンポーネントの入門と習得シリーズ 5 に
続きます。
データベースに接続してレコード セットを開くと、次のようになります。
プログラムコード
rs.Open strsql、conn、adOpenDynamic、adLockPessimistic
「,」を入力すると、カーソルの種類またはロックの種類のリストが表示され、選択できます。
単純化するために、直接 rs.open strsql,conn,1,3 を実行することもあります。
最初の方法のほうがより専門的ですか?ASP で vb6 を開いて新しい Activex DLL プロジェクトを作成する方法を見てみましょう
。プロジェクト名が fCom に変更され、クラス名が fC5 に変更されます。
プログラムコード
明示的なオプション
'列挙型の定義
Public Enum Interfacedig
icfirst = 1
ic 秒 = 2
icthree = 3
icfour = 4
icfive=5
icsix=6
icserven=7
アイスサイト = 8
End Enum
'関数の定義
Public Function CallDat(ByVal idig As Integer, ByVal ics As Interfacedig) As Variant
CallDat = idig * ics
の終了
[メニュー]->[ファイル]->[fCom.dll ファイルの生成] をクリックして、
ディレクトリに fCom.dll ファイルが存在することを確認し、
visual interdev6.0 をテスト
して、asp ファイル
プログラム コードを生成します。
<%@ 言語=VBScript %>
<HTML>
<本体>
<%
'定義、ado のレコード セット<!--#include file="adovbs.inc"--> と同じように、この部分をファイルに入れることもできます。
const icfirst = 1
const icsec = 2
const icthree = 3
const icfour = 4
const icfive = 5
const icsix = 6
const icserven = 7
定数アイスサイト = 8
set obj=server.CreateObject("fCom.fc5")
'ここではiceightまたは8を使用できますが、前者の方がコードが読みやすくなります
a= obj.CallDat(4,iceight)
応答。書く
応答。「<br>」と書いてください。
a= obj.CallDat(4,8)
応答。書く
%>
<P> </P>
</BODY>
</HTML>
仮想ディレクトリを構成し、この ASP ファイルを IE で実行すると、結果は次のようになります
。
32
Asp コンポーネントの基本入門と習得シリーズ 6
エラー処理
ページにエラーがあり、エラー処理が行われていない場合、ページにはユーザーが理解できないエラーが表示されます。
ASPスクリプトで使用可能
プログラムコード
エラー時は次へ再開
…
Err.Number<>0 の場合、
応答.書き込みエラーの説明
次の場合に終了
しかし、コンポーネントで何か問題が発生した場合はどうなるでしょうか?このメソッドはエラーをキャッチできますが、具体的なエラーを知るにはどうすればよいでしょうか?
コンポーネントにエラー処理を追加してエラーを返すことができるため、より詳細なエラー情報を簡単に確認でき、エラーのトラブルシューティングに役立ちます。
Err.Raise を使用します。Raise は、
vb6 を開き、新しい Activex DLL プロジェクトを作成するために使用されます。プロジェクト名は fCom に変更され、クラス名は fC6 に変更されます。
プログラムコード
明示的なオプション
パブリックサブ showerror1()
エラー時はエラーハンドルに移動
ディム・アイ・アズ・ダブル
i=1/0
エラーハンドル:
Err.Raise Err.Number、Err.Source、Err.Description
End Sub
'カスタムエラーを生成する
パブリックサブ showerror2()
Err.Raise 600、「自己定義エラー 600」、「これは独自のプログラムを説明するエラーです」
End Sub
OK、コンポーネントが書き込まれました。メニュー -> ファイル -> fCom.dll ファイルの生成をクリックして、
ビジュアル
interdev6.0 をテスト
して開き、asp ファイルの
プログラム コードを生成します。
<%@ 言語=VBScript %>
<HTML>
<本体>
<%
「次の文は非常に重要です」
エラー時は次から再開
set obj=server.CreateObject("fCom.fc6")
obj.showerror1()
'エラー処理がない場合、エラー インターフェイスが生成されますが、これは非常にプロフェッショナルではありません。
0 ~ 512 の範囲はシステム エラー用に予約されており、513 ~ 65535 の範囲はユーザー定義のエラーに使用できます。
'保持されたエラーの場合、コンポーネント内のエラー番号はページ処理のエラー番号と一致します。
err.number <>0 の場合
Response.Write "エラーメッセージ" & err.number & err.Description
終了する場合
応答。「<br>」と書いてください。
'ユーザー定義のエラーの場合は、ページ上で個別に処理できます
obj.showerror2()
err.number<>0 の場合
err.number = 600 の場合
Response.Write err.number & err.Source & err.Description
終了する場合
終了する場合
%>
</BODY>
</HTML>
仮想ディレクトリを構成し、この ASP ファイルを IE で実行すると、結果は次のようになります。
エラー メッセージ 11 はゼロで除算されます。
600 自己定義エラー 600 これは、
ASP コンポーネントの初心者入門および習得シリーズ パート 7
を説明するエラーです。前の章の例を実行すると、多かれ少なかれ
次のような問題が発生する可能性があります。コンパイルすると、変更する必要があります。「許可が拒否されました、'f:csdnfcom.dll'」などのエラーが発生します。
ASP ページを参照するときにタスク マネージャーを開くと、ユーザー名 IWAM_YANG の dllhost.exe のプロセスが表示されます。 IWAM_YANG はコンピュータ名によって異なります。
1.を解決するには以下の方法が考えられます
。 iis を再起動します。
[管理ツール] -> [インターネット インフォメーション サービス] -> コントロール パネルの左側のツリーの 2 番目のレベルでローカル コンピュータを右クリック -> [すべてのタスク] -> IIS を再起動します。この操作には時間がかかります。
この時点で、dllhost.exe プロセスが閉じられていることがわかります
。 上記の方法の欠点は、再起動するまですべての Web サイトがシャットダウンされることです。
単一の Web サイトまたは仮想ディレクトリに対する解決策はありますか?
[管理ツール] -> [インターネット インフォメーション サービス] -> [コントロール パネル] で、コンポーネントが実行されている仮想ディレクトリを見つけます
。
->「プロパティ」を右クリック ->最初の仮想ディレクトリで ->「アプリケーション保護」 ->「アンインストール」をクリックします。
この時点で、dllhost.exe プロセスが閉じられていることがわかります
。 面倒な場合は、Windows タスク マネージャー 4 でプロセスを直接終了してください
。 最後の方法は
、コントロール パネルで管理ツールを見つけます -> コンポーネント サービス -> コンピューター、マイ コンピューター、実行中のプロセスをクリックします -> IIS アウトオブプロセス プールされたアプリケーション (2860) -> 右クリックして閉じます。
この時点では、dllhost.exe プロセスが閉じられていることがわかります。