Teil eins der Reihe „Grundlegende Einführung und Beherrschung von Asp-Komponenten“
. Ich wollte schon immer einige Komponentenanwendungen schreiben. In dieser Zeit kann ich endlich etwas schreiben, das mir gefällt.
Ich hoffe, dass Sie nach dem Studium dieser Tutorials Ihre eigenen Komponenten nach Ihren Wünschen schreiben können.
Jeder Artikel ist möglicherweise nicht verwandt, sondern beschreibt lediglich einige Probleme, die beim Schreiben von Komponenten auftreten.
Begrüßen Sie alle, um die Umgebung zu kritisieren und zu korrigieren
: winxp + vb6 + sp6 + visual interdev6.0
Als erster Artikel schreiben wir zunächst eine relativ einfache Komponente
, die die folgenden Funktionen ausführt: zwei Zahlen eingeben und addieren, das addierte Ergebnis zurückgeben
, vb6 öffnen und ein neues Activex-DLL-Projekt erstellen. Ändern Sie den Projektnamen in fCom und den Klassennamen in fC1.
Wir geben „Hinzufügen“ in den Namen ein, wählen „Funktion“ als „Bereich“ und bestätigen dann, um
den
folgenden Code zu generieren werde es weiter verbessern.
Programmcode
Option explizit
Öffentliche Funktion Add(ByVal a As Long, ByVal b As Long) As Long
Addiere=a+b
Funktion beenden
Ok, eine einfache Komponente wurde geschrieben. Klicken Sie
zur Bestätigung auf die Datei fCom.dll.
ÖffnenSie
Visual Interdev6.0 und generieren Sie eine ASP-Datei Verwenden Sie es? Interdev, weil es über eine Code-Eingabeaufforderungsfunktion verfügt, mit der IDE-Umgebung von VB übereinstimmt und bequem zu schreiben ist
Programmcode
<%@ Language=VBScript %>
<HTML>
<KOPF>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<KÖRPER>
<%
set obj=server.CreateObject("fCom.fC1")
'Achten Sie auf den folgenden Satz, da die Funktion einen Rückgabewert hat. Sie können ihn nicht in die folgende Methode schreiben, da sonst im IE ein Fehler gemeldet wird
'obj.Add(3,4)
'Fehlertyp:
„Microsoft VBScript-Compilerfehler (0x800A0414)“
'Sie können beim Aufruf einer Unterroutine keine Klammern verwenden
'/xml/fc1.asp, Zeile 9, Spalte 12
'obj.Add(3,4)
„Das Folgende ist die richtige Art zu schreiben
schwach c
c=obj.Add(3,4)
Response.Write c
%>
</BODY>
</HTML>
Konfigurieren Sie das virtuelle Verzeichnis, führen Sie diese ASP-Datei im IE aus und erhalten Sie das Ergebnis. 7.
Der erste Artikel ist beendet. Ich wünsche Ihnen allen viel Spaß beim Lernen.
Asp Components Basic Introduction and Mastery Series 2
So registrieren Sie Komponenten
1. Der absolute Pfad der regsvr32-Komponente
lautet wie folgt:
Programmcode
regsvr32 c:testfc1.dll
Da die Komponente verwendet werden kann, solange sie registriert ist, hat dies nichts mit dem Standort der Komponente zu tun.
2.
Wann ist diese Registrierungbei der Registrierung im COM+-Komponentenmanager
erforderlich: Komponenten müssen registriert werden, bevor sie nach der Verwendung von COM+-Diensten normal ausgeführt werden können. Wenn die Komponente nur bei regsvr32 registriert ist, kann sie trotzdem nicht verwendet werden
. So verwenden Sie die Komponente
Programmcode
set obj=server.createobject("Projektname. Klassenname")
Rufen Sie dann das Methodenattribut auf.
So deinstallieren Sie die Komponente
1. Der absolute Pfad der regsvr32-Komponente
lautet wie folgt:
Programmcode
regsvr32 c:testfc1.dll /u
u-Parameter Anti-Registrierungskomponente
2. Löschen Sie einfach die Komponente im COM+-Komponentenmanager
und der Mastery-Serie, Teil drei:
So verwenden Sie Eigenschaften,
um vb6 zu öffnen und ein neues Activex-DLL-Projekt zu erstellen. Ändern Sie den Projektnamen in fCom und den Klassennamen in fC2.
Klicken Sie auf Menü->Extras->Prozess hinzufügen.
Wir geben myName als Typ ein, wählen als Bereich public aus und bestätigen
den Vorgang erneut: Geben Sie „Age“ in den Namen ein, wählen Sie das Attribut als Typ aus, wählen Sie „public“ im Bereich aus und bestätigen Sie dann
erneut: Geben Sie „peopleInfo“ in den Namen ein, wählen Sie „function“ als Typ aus, wählen Sie „public“ im Bereich aus und bestätigen Sie dann
den Code ist wie folgt:
Programmcode
Option explizit
„Lokale Variablen, die Attributwerte enthalten, können nur in Klassen verwendet werden.“
Privater mvarmyName als String
Privates mvarAge als Ganzzahl
'Attribute schreiben lassen (Attribute zulassen: Dieser Prozess weist einem Attribut einen Wert zu.)
Öffentliches Eigentum Let Age(ByVal vData As Integer)
mvarAge = vData
End-Eigenschaft
'Gelesenes Attribut abrufen (Dieser Prozess ruft den Wert eines Attributs ab.)
Öffentliches Eigentum Get Age() als Ganzzahl
Alter = mvarAge
End-Eigenschaft
Öffentliche Eigenschaft Let myName(ByVal vData As String)
mvarmyName = vData
End-Eigenschaft
Öffentliche Eigenschaft Get myName() As String
meinName = mvarmyName
Endeigenschaft
Öffentliche Funktion peopleInfo() Als String
peopleInfo = "Name: " & mvarmyName & " Alter: " & mvarAge
Funktion beenden
Ok, eine einfache Komponente wurde geschrieben. Klicken Sie
zur Bestätigung auf die Datei fCom.dll.
ÖffnenSie
Visual Interdev6.0 und generieren Sie eine ASP-Datei Verwenden Sie es? Interdev, weil es über eine Code-Eingabeaufforderungsfunktion verfügt, mit der IDE-Umgebung von VB übereinstimmt und bequem zu schreiben ist
Programmcode
<%@ Language=VBScript %>
<HTML>
<KÖRPER>
<%
set obj=server.CreateObject("fCom.fC2")
schwach c
„Was hier aufgerufen wird, ist die Let-Eigenschaft der Komponente.“
obj.myName="Tornado"
obj.Alter =20
c=obj.peopleInfo()
Response.Write c
'Was hier aufgerufen wird, ist die Get-Eigenschaft der Komponente
Response.Write „<br>“
Response.Write obj.myName
Response.Write „<br>“
Response.Write obj.Age
%>
</BODY>
</HTML>
Konfigurieren Sie das virtuelle Verzeichnis und führen Sie diese ASP-Datei im IE aus. Die Ergebnisse sind wie folgt:
Name: Tornado Alter: 20
Tornado
20
Fortsetzung:
Einführung und Beherrschung der Asp-Komponente 4
Array-Probleme
Arrays werden häufig in Programmen verwendet und verursachen eher Probleme.
Schauen wir uns das anhand eines kleinen Beispiels an
. Öffnen Sie vb6 und erstellen Sie ein neues Activex-DLL-Projekt. Ändern Sie den Projektnamen in fCom und den Klassennamen in fC4.
Klicken Sie auf Menü->Extras->Prozess hinzufügen.
Wir geben AcceptArray1 als Typ ein, wählen Sie public als Bereich aus und bestätigen Sie
den Vorgang erneut: Enter AcceptArray2 im Namen und wählen Sie die Funktion als Typ aus, wählen Sie public als Bereich aus und bestätigen Sie dann
Programmcode
'Funktion: Übergeben Sie die Array-Adresse an die Komponente, verwenden Sie das Schlüsselwort ByRef und weisen Sie sie zu und geben Sie sie zurück
Public Sub AcceptArray1(ByRef varray As Variant) As Variant
varray(0) = „Tornado“
varray(1) = „20“
End Sub
'Funktion: Gibt ein String-Array zurück
Öffentliche Funktion AcceptArray2() als Variante
Dim a(2) als Variante
a(0) = „Tornado“
a(1) = „20“
AcceptArray2=a
Endfunktion
Ok, eine Komponente ist geschrieben. Klicken Sie zur Bestätigung auf die Datei fCom.dll
.
ÖffnenSie
Visual Interdev6.0 und generieren Sie einen ASP-Dateiprogrammcode
.
<%@ Language=VBScript %>
<HTML>
<KÖRPER>
<%
dim obj
set obj = server.createobject("fCom.fC4")
dimmen a(2)
'Testen Sie die erste Komponentenmethode
obj.AcceptArray1(a)
Antwort.schreibe a(0)
Response.write „<br>“
Antwort.schreibe a(1)
Response.write „<br>“
'Testen Sie die zweite Komponentenmethode
schwach b
b=obj.AcceptArray2()
für i=0 bis ubound(b)
Response.Write b(i)
Response.write „<br>“
nächste
%>
</BODY>
</HTML>
Konfigurieren Sie das virtuelle Verzeichnis und führen Sie diese ASP-Datei im IE aus. Die Ergebnisse sind wie folgt:
Tornado
20
Tornado
20
Zusammenfassend:
Zeichenfolgen und Zahlen werden als Wert übergeben oder als Rückgabewert zurückgegeben.
Bei der Übergabe als Referenz legen Sie den Typ des Parameters auf „Variant“ fest. Dadurch können einige Fehler vermieden werden. Versuchen Sie jedoch, die als Referenz übergebenen Parameter so weit wie möglich zu reduzieren.
Fortsetzung
: Einführung und Beherrschung der Asp-Komponentenserie 5.
Beim Herstellen einer Verbindung zur Datenbank und beim Öffnen des Datensatzes können wir Folgendes feststellen:
Programmcode
rs.Open strsql, conn,adOpenDynamic,adLockPessimistic
Wenn Sie "," eingeben, erscheint eine Liste mit Cursortypen oder Sperrtypen zur Auswahl.
Zur Vereinfachung verwenden wir manchmal direkt rs.open strsql,conn,1,3.
Ist die erste Methode professioneller? Sehen wir uns an, wie man
vb6 in asp öffnet und ein neues Activex-DLL-Projekt erstellt. Der Projektname wird in fCom und der Klassenname in fC5 geändert
Programmcode
Option explizit
'Aufzählungstyp definieren
Öffentliche Enum-Schnittstelledig
icfirst = 1
icsecond = 2
icdrei = 3
icfour = 4
icfünf=5
icsix=6
icserven=7
Eisacht = 8
End Enum
'Funktion definieren
Öffentliche Funktion CallDat(ByVal idig As Integer, ByVal ics As Interfacedig) als Variante
CallDat = idig * ics
Endfunktion
Ok, eine Komponente ist geschrieben. Klicken Sie zur Bestätigung auf die Datei fCom.dll
.
ÖffnenSie
Visual Interdev6.0 und generieren Sie einen ASP-Dateiprogrammcode
.
<%@ Language=VBScript %>
<HTML>
<KÖRPER>
<%
'Definition, Sie können diesen Teil auch in eine Datei einfügen, genau wie der Datensatz von Ado <!--#include file="adovbs.inc"-->
const icfirst = 1
const icsecond = 2
const ic three = 3
const icfour = 4
const icfünf = 5
const icsix = 6
const icserven = 7
const eight = 8
set obj=server.CreateObject("fCom.fc5")
'iceight oder 8 können hier verwendet werden, ersteres macht den Code jedoch besser lesbar
a= obj.CallDat(4,iceight)
Antwort.Schreiben Sie eine
Response.Write „<br>“
a= obj.CallDat(4,8)
Antwort.Schreiben Sie eine
%>
<P> </P>
</BODY>
</HTML>
Konfigurieren Sie das virtuelle Verzeichnis und führen Sie diese ASP-Datei im IE aus. Die Ergebnisse sind wie folgt:
32
32
Asp Component Basic Introduction and Mastery Series 6
Fehlerbehandlung
Wenn auf der Seite ein Fehler vorliegt und keine Fehlerbehandlung erfolgt, wird auf der Seite ein Fehler angezeigt, den der Benutzer möglicherweise nicht versteht.
Kann im ASP-Skript verwendet werden
Programmcode
Bei Fehler Weiter fortsetzen
…
wenn Err.Number<>0 dann
Response.Write Err.Description
Ende wenn
Was aber, wenn in der Komponente etwas schief geht? Diese Methode kann Fehler abfangen, aber wie erkennt man den spezifischen Fehler?
Wir können der Komponente eine Fehlerbehandlung hinzufügen, um Fehler zurückzugeben, sodass wir einfacher detailliertere Fehlerinformationen sehen und uns bei der Fehlerbehebung helfen können.
Verwenden Sie Err.Raise. Raise wird zum Generieren von Laufzeitfehlern verwendet.
Öffnen Sie vb6 und erstellen Sie ein neues Activex-DLL-Projekt. Der Projektname wird in fCom und der Klassenname in fC6 geändert
Programmcode
Option explizit
Öffentlicher Sub showerror1()
Bei Fehler Gehe zu ErrorHandle
Dim i As Double
i=1/0
Fehlerhandle:
Err.Raise Fehlernummer, Fehlerquelle, Fehlerbeschreibung
End Sub
'Benutzerdefinierte Fehler generieren
Öffentlicher Sub showerror2()
Err.Raise 600, „Selbstdefinierter Fehler 600“, „Dies ist ein Fehler, der Ihr eigenes Programm beschreibt“
Ende Sub
Ok, eine Komponente ist geschrieben. Klicken Sie zur Bestätigung auf die Datei fCom.dll
.
ÖffnenSie
Visual Interdev6.0 und generieren Sie einen ASP-Dateiprogrammcode
.
<%@ Language=VBScript %>
<HTML>
<KÖRPER>
<%
„Der folgende Satz ist sehr wichtig.“
Bei Fehler als nächstes fortfahren
set obj=server.CreateObject("fCom.fc6")
obj.showerror1()
„Wenn es keine Fehlerbehandlung gibt, wird eine Fehlerschnittstelle generiert, was sehr unprofessionell ist.“
„Der Bereich von 0–512 ist für Systemfehler reserviert; der Bereich von 513–65535 kann für benutzerdefinierte Fehler verwendet werden.“
'Wenn es sich um einen beibehaltenen Fehler handelt, stimmt die Fehlernummer in der Komponente mit der Fehlernummer der Seitenverarbeitung überein
Wenn Fehlernummer <>0, dann
Antwort. Schreiben Sie „Fehlermeldung“ und Fehlernummer und Fehlerbeschreibung
Ende wenn
Response.Write „<br>“
'Wenn es sich um einen benutzerdefinierten Fehler handelt, kann dieser separat auf der Seite verarbeitet werden
obj.showerror2()
wenn err.number<>0 dann
Wenn Fehlernummer = 600, dann
Antwort. Schreiben Sie die Fehlernummer und die Fehlerquelle und die Fehlerbeschreibung
Ende wenn
Ende wenn
%>
</BODY>
</HTML>
Konfigurieren Sie das virtuelle Verzeichnis und führen Sie diese ASP-Datei im IE aus. Die Ergebnisse sind wie folgt:
Fehlermeldung 11 wird durch Null geteilt.
600 Selbstdefinierter Fehler 600 Dies ist ein Fehler, der Ihr eigenes Programm
zur Einführung und Beherrschung von Asp-Komponenten, Teil 7,
beschreibt.Beim Ausführen der Beispiele in den vorherigen Kapiteln können mehr oder weniger Probleme auftreten
, z. B. nach der Komponente kompiliert, muss es geändert werden, es treten Fehler wie „Berechtigung verweigert, ‚f:csdnfcom.dll‘“ usw. auf.
Öffnen Sie beim Durchsuchen der ASP-Seite den Task-Manager und Sie sehen einen Prozess von dllhost.exe mit dem Benutzernamen IWAM_YANG. IWAM_YANG variiert je nach Computername.
Sie können die folgenden Methoden verwenden, um
1 zu lösen. Starten Sie iis neu.
Klicken Sie in der Systemsteuerung auf der zweiten Ebene der Baumstruktur mit der rechten Maustaste auf „Verwaltungstools“ > „Internetinformationsdienste“ > „Alle Aufgaben“ > „IIS neu starten“.
Zu diesem Zeitpunkt können Sie sehen, dass der Prozess dllhost.exe geschlossen wurde
2. Der Nachteil der oben genannten Methode besteht darin, dass alle Websites bis zum Neustart geschlossen sind.
Gibt es eine Lösung für eine einzelne Website oder ein einzelnes virtuelles Verzeichnis? Suchen Sie
in der Systemsteuerung nach Verwaltungstools -> Internetinformationsdienste -> Suchen Sie das virtuelle Verzeichnis, in dem Ihre Komponente ausgeführt wird. ->Rechtsklick auf Eigenschaften ->Im ersten virtuellen Verzeichnis ->Anwendungsschutz ->Klicken Sie auf Deinstallieren.
Zu diesem Zeitpunkt können Sie sehen, dass der Prozess dllhost.exe geschlossen wurde
3. Wenn Sie Schwierigkeiten damit haben, beenden Sie den Vorgang einfach direkt im Windows Task-Manager
4. Die letzte Methode
besteht darin, die Verwaltungstools in der Systemsteuerung zu finden -> Komponentendienste -> auf Computer, Arbeitsplatz, Laufende Prozesse -> IIS Out-Of-Process Pooled Applications (2860) -> mit der rechten Maustaste zu klicken, um sie zu schließen
Zu diesem Zeitpunkt können Sie sehen, dass der Prozess dllhost.exe geschlossen wurde.