title image


Smiley Also ich würde eine Dll vorziehen,...
in VB ist es nicht möglich, einfache Code-Dll's zu schreiben wie zB in C/C++, Delphi, Pascal... aber fast.



Mit VB kann man nur sog. ActiveX-Dll's schreiben, das sind COM-Objekte.







Crashkurs in Dll-schreiben:





VB starten und im Dialogfeld Neues Projekt ActiveX-dll auswählen (gibt's in der Einsteigeredition nicht,

da hast du dann leider verloren, geht also nur bei Professional oder Enterprise-Ed.)





Du hast dann ein Codefenster, das den seltsamen Namen Class1 trägt.

Die Eigenschaft Instancing muß auf 5(MultiUse) gesetzt werden (ist Voreinstellung)



Hier kannst du dann alle Funktionen reinpinseln, die benötigt werden.

Alles was hier als Public definiert ist, kann später "von außen" benutzt werden.

Allerdings bestehen gewisse Einschränkungen, so kann man zB keine Public Const verwenden und

auch nicht einfach Array's an Funktionen übergeben.



zB

in einem normalen Modul funktioniert sowas:

Public Sub X(ByRef a() As String)



in einer Klasse nicht! Da muß man auf Variant ausweichen

Public Sub X(ByRef a As Variant)

!! Beachte, daß kein Array deklariert ist (keine Klammern nach a)

aber ein Redim a(10) oder alle anderen Arrayzugriffsmethoden funktionieren, wenn auf der

"anderen Seite" ein Array übergeben wurde





Du kannst auch eigene Eigenschaften definieren (Schlüsselwort: Property)

und eigene Ereignisse auslösen (Schlüsselwort: Event)

(du kannst, mußt aber nicht)



Und zum Schluß noch schnell: Was nenne ich wie und wie finde ich es dann:



Wenn die Dll kompiliert ist, taucht sie im Dialogfenster Projekt->Verweise auf,

man kann sie also ganz einfach in jedes Projekt aufnehmen - nicht nur in VB, in

jede Progsprache die COM unterstützt, zB C++,Delphi, in VBA natürlich (Word, Excel...)



Was muß jetzt aber wie heißen? Das kann ich jetzt nur aus dem Gedächtnis tippen,

hier zuhause hab' ich nur die Einsteigered. da kann ichs jetzt nicht ausprobieren

(in der Arbeit hab' ich natürlich das volle Programm: Visual Studio Enterprise)



Also die Name-Eigenschaft der Klasse (die standardmäßig Class1 heißt) taucht hinter

dem Punkt in der Schnittstelle auf. Die Name-Eigenschaft des Projekts vor dem Punkt

(ist das gleiche wie im Projekteigenschaftendialog das Feld Projektname) und

die taucht (glaube ich) auch im Dialogfenster Verweise auf.

So wie zB Word.Application -> Projekt: Word, Klasse: Application



Der Dateiname der vbp wird als Dateiname der dll beim kompilieren vorgeschlagen.



Das war jetzt das wichtigste, es gibt noch mehr Namen und Beschreibungsfelder, aber

was dann wo auftaucht, weiß ich jetzt nicht auswendig.



Zugreifen kann man dann auf die Dll genauso wie auf jede andere Dll, die man über

die Verweise aufnimmt.

zB



Dim x As MyDll.MyClass



Set x As New MyClass



x.MyFunction("blabla")



Das Teil taucht natürlich auch im Objektkatalog (F2) auf, wenn der Verweis gesetzt wurde.

Wenn man im Dialogfenster Prozedureattribute bei der jeweiligen Sub,Function,Property,Event

etwas ins Feld Beschreibung geschrieben hat, dann wird das im Objektkatalog auch angezeigt.



Anm: Wenn die Eigenschaft Instancing der Klasse auf GlobalMultiUse steht, dann kann man die

Funktionen dieser Klasse ohne irgendwelche Deklarationen einfach aufrufen, so wie wenn sie

in einem bas-Modul stehen würden. (bin mir jetzt nicht sicher, ich glaube aber daß das dann geht)



In einer Dll kann nur eine Klasse auf GlobalMultiUse gesetzt sein. In einer Dll können mehrere

Klassen enthalten sein (einfach Projekt->Klassenmodul hinzufügen). In einer Dll können auch Forms

und Module enthalten sein. Die Module sind von außen nicht zugänglich, bei den Forms bin ich mir

jetzt nicht sicher, aber wenn nicht, kann man ja die Form von einer Klassenfunktion aus starten.







So, das reicht jetzt für den Anfang, über dieses Thema gibts viele dicke Bücher, das kann ich

hier im Forum nicht alles schreiben.



Hier findest du was in der MSDN:

unter den oben genannte Schlüsselwörtern



unter: Visual Basic-Dokumentation\Arbeiten mit Visual Basic\Komponentenhandbuch







Gruß

Gaga


Gruß
Gaga

___________________________________________________________________

Profilösungen für VB6
wenn nicht anders angegeben, sind alle Codebeispiele nicht getestet, nur getippt


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: