Du bist nicht angemeldet.

[Release] PluginLib [2.1]

Chrisber

Super Moderator

  • »Chrisber« ist der Autor dieses Themas

Beiträge: 634

Dabei seit: 28. Januar 2007

Hilfreich-Bewertungen: 244

  • Private Nachricht senden

21

Donnerstag, 15. Oktober 2009, 15:48

Hi.
Nein, ich habe von Properties nicht wirklich eine Ahnung - sorry.

Gruß
» Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

22

Donnerstag, 15. Oktober 2009, 16:01

Hi.
Nein, ich habe von Properties nicht wirklich eine Ahnung - sorry.

Gruß
Ok. Ich hab ne kleine Lösung gefunden.
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


4typen

Droggelbecher?

  • »4typen« ist männlich

Beiträge: 436

Dabei seit: 26. April 2009

Hilfreich-Bewertungen: 105

  • Private Nachricht senden

23

Sonntag, 18. Oktober 2009, 17:02

Muss man das irgendwie alles so kompliziert machen? Ich hab jetzt einfach mal diesen Code:

Visual Basic Quellcode

1
PluginManager.LoadPlugin(Application.StartupPath & "\Plugins\" & e.ClickedItem.Text & ".dll")


Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Kann man das nicht einfach so machen?

Chrisber

Super Moderator

  • »Chrisber« ist der Autor dieses Themas

Beiträge: 634

Dabei seit: 28. Januar 2007

Hilfreich-Bewertungen: 244

  • Private Nachricht senden

24

Sonntag, 18. Oktober 2009, 17:45

Doch kannst du.
Schau dir mal die Exceptions an die die Funktion wirft und fange sie ab, um zu sehen, wo der Fehler liegt. Ist der Pfad auch 100% richtig?
Folgende Exceptions können geworfen werden:

Visual Basic Quellcode

1
2
3
4
5
6
7
System.IO.FileNotFoundException = Die Datei existiert nicht.
PluginLib.NoDLLException = Die Datei ist keine DLL.
PluginLib.NoAssemblyDLLException = Die Datei ist keine .NET Assembly DLL.
PluginLib.NoCallableObjectException = Namespace oder Klasse nicht gefunden.
PluginLib.NoInstanceException = Instanz des Plugins konnte nicht erstellt werden.
PluginLib.NeededVariableNotFoundException = Eine unbedingt benötigte Variable wurde nicht gefunden.
PluginLib.NeededMethodNotFoundException = Eine unbedingt benötigte Methode wurde nicht gefunden.


Gruß
» Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

4typen

Droggelbecher?

  • »4typen« ist männlich

Beiträge: 436

Dabei seit: 26. April 2009

Hilfreich-Bewertungen: 105

  • Private Nachricht senden

25

Sonntag, 18. Oktober 2009, 17:49

Die Unteren beiden Exceptions, also die beiden unbedingt benötigten, kannst du da mal ein kurzes einfaches Beispiel machen?

Chrisber

Super Moderator

  • »Chrisber« ist der Autor dieses Themas

Beiträge: 634

Dabei seit: 28. Januar 2007

Hilfreich-Bewertungen: 244

  • Private Nachricht senden

26

Sonntag, 18. Oktober 2009, 17:56

Hi.
Naja ist doch eigentlich ganz einfach. Wenn du eine Methode als benötigt markierst (z.B. PluginManager.AddMethod("TestMethode")) und diese Methode dann nicht existiert, wird eine Exception geworfen.

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
PluginManager.AddMethod("TestMethode")
PluginManager.AddVariable("TestVariable")

Try
    PluginManager.LoadPlugin(Application.StartupPath & "\Plugins\" & e.ClickedItem.Text & ".dll")
Catch ex As PluginLib.NeededMethodNotFoundException
    MsgBox("Methode wurde nicht gefunden: " + ex.MethodName)
Catch ex As PluginLib.NeededVariableNotFoundException
    MsgBox("Variable wurde nicht gefunden: " + ex.VariableName)
End Try

MsgBox("Alles Ok!")


Gruß
» Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

Beep!

Registrierter Benutzer

  • »Beep!« ist männlich

Beiträge: 931

Dabei seit: 7. März 2009

Wohnort: Wien (A)

Hilfreich-Bewertungen: 25

  • Private Nachricht senden

27

Dienstag, 20. Oktober 2009, 22:34

Hey, diese DLL ist einfach toll.
Hab aber eine Frage. Wie kann man Parameter über GetMethod übergeben?

LG,
Beep :)
Für alle, die bequem ihre Programmeinstellungen speichern möchten: [Open Source] INI 2.1
  • Intelligentes und objektorientiertes Konzept
  • Nützliche und übersichtliche Features
  • Umfangreiche Einsatzmöglichkeiten


Geld war stets rar, wie Dateiarchive.

Chrisber

Super Moderator

  • »Chrisber« ist der Autor dieses Themas

Beiträge: 634

Dabei seit: 28. Januar 2007

Hilfreich-Bewertungen: 244

  • Private Nachricht senden

28

Mittwoch, 21. Oktober 2009, 14:30

Hi.

Visual Basic Quellcode

1
PluginManager.GetPlugin("Pluginname").GetMethod("TestMethode").Invoke(New Object() {"Hallo Welt!"})


Würde die Funktion Pluginname.TestMethode("HalloWelt") aufrufen (also String)

Gruß
» Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

Beep!

Registrierter Benutzer

  • »Beep!« ist männlich

Beiträge: 931

Dabei seit: 7. März 2009

Wohnort: Wien (A)

Hilfreich-Bewertungen: 25

  • Private Nachricht senden

29

Mittwoch, 21. Oktober 2009, 19:22

OK, Danke. Und was, wenn der Parameter einen anderen Typ hat?
EDIT: Und was genau bedeutet die NoInstanceException. Wollte eine DLL laden und dann kam dieser Fehler.
Für alle, die bequem ihre Programmeinstellungen speichern möchten: [Open Source] INI 2.1
  • Intelligentes und objektorientiertes Konzept
  • Nützliche und übersichtliche Features
  • Umfangreiche Einsatzmöglichkeiten


Geld war stets rar, wie Dateiarchive.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Beep!« (21. Oktober 2009, 19:51)


Chrisber

Super Moderator

  • »Chrisber« ist der Autor dieses Themas

Beiträge: 634

Dabei seit: 28. Januar 2007

Hilfreich-Bewertungen: 244

  • Private Nachricht senden

30

Mittwoch, 21. Oktober 2009, 19:56

Du hast wahrscheinlich irgendeinen Fehler. Es kann sein, dass du beim Erstellen der PluginLib Instanz die falschen Namein eingetragen hast.

Visual Basic Quellcode

1
New PluginLib.PluginLib("$plugin", "Blar")

Bei dem Beispiel muss die DLL den Namen den gleichen Namen haben, wie der Projektname.
Also Projektname = Dateiname. Der 2. Parameter gibt den Klassennamen an.

Also für TestPlugin.dll muss der Projektname TestPlugin lauten und die Klasse so aussehen:

Visual Basic Quellcode

1
Public Class Blar


Gruß
» Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

Beep!

Registrierter Benutzer

  • »Beep!« ist männlich

Beiträge: 931

Dabei seit: 7. März 2009

Wohnort: Wien (A)

Hilfreich-Bewertungen: 25

  • Private Nachricht senden

31

Mittwoch, 21. Oktober 2009, 19:59

Der Fehler tritt aber erst bei LoadPlugin auf...
Für alle, die bequem ihre Programmeinstellungen speichern möchten: [Open Source] INI 2.1
  • Intelligentes und objektorientiertes Konzept
  • Nützliche und übersichtliche Features
  • Umfangreiche Einsatzmöglichkeiten


Geld war stets rar, wie Dateiarchive.

Chrisber

Super Moderator

  • »Chrisber« ist der Autor dieses Themas

Beiträge: 634

Dabei seit: 28. Januar 2007

Hilfreich-Bewertungen: 244

  • Private Nachricht senden

32

Mittwoch, 21. Oktober 2009, 20:01

Jap. Das liegt daran, dass erst dann überprüft werden kann, ob alles Glatt gelaufen ist. Hast du den Projektnamen auch wirklich so genannt, wie oben beschrieben?

Gruß
» Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

Beep!

Registrierter Benutzer

  • »Beep!« ist männlich

Beiträge: 931

Dabei seit: 7. März 2009

Wohnort: Wien (A)

Hilfreich-Bewertungen: 25

  • Private Nachricht senden

33

Mittwoch, 21. Oktober 2009, 20:06

Also ich hab zuerst probiert bei beiden "$plugin", dann beim ersten "$plugin" und beim zweiten den Klassennamen, dann beim ersten den Projektnamen und beim zweiten den Klassennamen.
Kommt aber immernoch die gleiche Exception :/
Für alle, die bequem ihre Programmeinstellungen speichern möchten: [Open Source] INI 2.1
  • Intelligentes und objektorientiertes Konzept
  • Nützliche und übersichtliche Features
  • Umfangreiche Einsatzmöglichkeiten


Geld war stets rar, wie Dateiarchive.

Chrisber

Super Moderator

  • »Chrisber« ist der Autor dieses Themas

Beiträge: 634

Dabei seit: 28. Januar 2007

Hilfreich-Bewertungen: 244

  • Private Nachricht senden

34

Mittwoch, 21. Oktober 2009, 21:12

Dann zeig doch mal, wie deine DLL heißt, wie der Projektname ist und wie die Klasse heißt. Dann poste die Zeile, in der du PluginLib instanzierst.

Gruß
» Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

35

Mittwoch, 21. Oktober 2009, 21:46

Nach meiner Meinung fehlt noch was ganz bestimmtes in der PluginLib und zwar das man auch Propertys aufrufen kann.
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


Chrisber

Super Moderator

  • »Chrisber« ist der Autor dieses Themas

Beiträge: 634

Dabei seit: 28. Januar 2007

Hilfreich-Bewertungen: 244

  • Private Nachricht senden

36

Mittwoch, 21. Oktober 2009, 21:52

Hi.
Du und deine Properties :D

*in Arbeit*

Gruß
» Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

37

Mittwoch, 21. Oktober 2009, 21:55

Hi.
Du und deine Properties :D

*in Arbeit*

Gruß
OK danke für die Info. Ich hab für ein Kunden mal ein Programm geschrieben, das ein Plugin-System verwendet. Und die Plugins haben Subs, Functions & Propertys.
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


Chrisber

Super Moderator

  • »Chrisber« ist der Autor dieses Themas

Beiträge: 634

Dabei seit: 28. Januar 2007

Hilfreich-Bewertungen: 244

  • Private Nachricht senden

38

Mittwoch, 21. Oktober 2009, 22:33

Hi.
Ich habe nun Support für Properties eingebaut. Da ich einfach davon ausgehe, dass es funktioniert, habe ich weder Tests durchgeführt noch das Beispiel erweitert, da ich mich mit Properties (wie gesagt) nicht / kaum auskenne. Ich hoffe mal, dass wenn es nicht geht, mir jemand Bericht darüber erstatten kann.

Gruß
» Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

39

Mittwoch, 21. Oktober 2009, 22:40

Hi.
Ich habe nun Support für Properties eingebaut. Da ich einfach davon ausgehe, dass es funktioniert, habe ich weder Tests durchgeführt noch das Beispiel erweitert, da ich mich mit Properties (wie gesagt) nicht / kaum auskenne. Ich hoffe mal, dass wenn es nicht geht, mir jemand Bericht darüber erstatten kann.

Gruß
Ich werde es mal testen und dann Feedback abgeben.
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

40

Donnerstag, 22. Oktober 2009, 14:30

Also ich hab es jetzt mal getestet und das mit den Propertys funktioniert. Wie kann ich eigentlich einer Variable einen Wert zuweisen
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


Social Bookmarks