Hallo,
ich habe folgendes Problem:
Ich möchte eine Procedure die den unten anegebenen Teil enthält in eine DLL auslagern.
Aber wenn ich dann diese Procedure aufrufe, dann wird kein Menu erzeugt, wenn ich aber die Unit direkt in das Programm einbinde, dann funktioniert es. Der Code ist also voll funktionsfähig.
Woran kann es liegen das der Code nicht aus einer DLL heraus funktioniert?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| Procedure LoadPlugins(Pfad: String; Pluginmenu:TMenuItem); VAR Suchergebnis : TSearchRec;
Plugin : TPlugin; NewItem : TMenuItem; GetPluginName : TGetPluginName; Pluginversion : TPluginVersion; I : Integer;
...
Begin FreeLibrary(Plugins_[Count_]); ShowMessage('Die Datei:' + #13 + Items.Strings[i] + #13 + 'ist keine Plugindatei und Wurde nicht geladen!' + #13 + 'Sie sollte aus dem Pluginverzeichnis entfernt werden.'); End Else Begin GetPluginName := TGetPluginName(GetProcAddress(Plugins_[Count_],'pluginname')); PluginVersion := TPluginversion(GetProcAddress(Plugins_[Count_],'pluginversion')); NewItem := TMenuItem.Create(nil); Newitem.Caption := GetPluginName; NewItem.Tag := Count_; If Pluginversion > 0 then Begin ShowMessage('Die Version der Plugindatei' + #13 + Items.Strings[i] + #13 + 'ist zu neu. Bitte die aktuelle Pluginschnittstellenversion' + ' herunterladen.'); End;
...
End; |
Übergeben tue ich die Parameter wie folgt:
Delphi-Quelltext
1:
| loadplugin('C:/ordner', Plugin1); |
Plugin1 ist ein Item des MainMenu.
Herzlichen Dank im voraus