vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: vba6.dll 
Autor: ModeratorDaveS (Moderator)
Datum: 18.04.03 21:08

.Net hat eigentlich viel mehr Möglichkeiten, du kannst mit Reflection IL Code generieren, oder der CodeDOM benutzen um zur Laufzeit Quellcode zu generieren und/oder Umwandeln. Folgendes Beispiel von MS zeigt wie man zur Laufzeit ein Klasse umwandelt und eine Methode aufruft.

    Public Function CreateAssemblyFromCode(ByVal Code As String) As [Assembly]
        ' Assembly aus VB.NET-Sourcecode in einem String erzeugen:
        ' CodeDomProvider für VB.NET erzeugen
        Dim CDP As CodeDomProvider = New Microsoft.VisualBasic.VBCodeProvider() _
                             ' Compiler erzeugen
        Dim Compiler As ICodeCompiler = CDP.CreateCompiler()                    _
             ' Compiler-Parameter erzeugen
        Dim CP As New CompilerParameters()
        CP.GenerateInMemory = True
        ' Compilieren und Compiler-Ergebnis ermitteln
        Dim CR As CompilerResults = Compiler.CompileAssemblyFromSource(CP, Code)
        ' Im Fehlerfall Nothing zurückgeben
        If CR.Errors.Count <> 0 Then
            Return Nothing
        Else
            Return CR.CompiledAssembly
        End If
    End Function
 
    ' Das testende Hauptprogramm
    Sub Test()
        ' Auszuführender Beispielcode in einem String
        Dim Code As String = _
            "Namespace aixsoft" & vbNewLine & _
              "Public Class Math" & vbNewLine & _
                "Public Function Add(ByVal x as Integer, " & _
                "ByVal y as Integer)" & vbNewLine & _
                  "Return x+y" & vbNewLine & _
                "End Function" & vbNewLine & _
              "End Class" & vbNewLine & _
            "End Namespace"
 
        ' Assembly aus dem Code erzeugen
        Dim ASM As [Assembly] = CreateAssemblyFromCode(Code)
        ' ... und ein Test der Assembly:
        Dim O As Object = ASM.CreateInstance("aixsoft.Math")
        Dim T As Type = O.GetType()
        Dim MI As MethodInfo = T.GetMethod("Add")
        ' Parameterwerte festlegen
        Dim Param(1) As Object
        Param(0) = 17
        Param(1) = 25
        ' Add-Funktion aufrufen
        Dim Result As Object = MI.Invoke(O, Param)
        ' Ausgabe des Ergebnisses
        Debug.WriteLine("17 + 25 = " & Result.ToString())
    End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
vba6.dll515Pére15.04.03 19:35
Re: vba6.dll1.450ModeratorDieter16.04.03 01:38
Re: vba6.dll330Pére18.04.03 20:23
Re: vba6.dll5.359ModeratorDaveS18.04.03 21:08
Re: vba6.dll326Pére07.06.03 17:51

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel