Hallo,
ich würde gerne ein Plugin-System einführen, so dass der Benutzer entscheiden kann,
was er in sein Programm lädt ...
Ich habe dazu vor, einen Manager zu basteln, der folgenden Code enthält:
Delphi-Quellcode:
unit pluginManager;
interface
uses
Windows, Classes, SysUtils, Forms, Dialogs,
plugin;
type
TkPlugInManager =
class(TComponent)
private
FPlugins: TList;
protected
function GetPlugins: FPlugins;
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
procedure LoadPlugin(FileName:
String);
virtual;
procedure UnLoadPlugin(
index: Integer);
virtual;
procedure GetLoadedPlugins(PluginList: TStrings);
virtual;
property PlugIns[
index: Integer] : TkPlugin
read GetPlugins;
default
property PlugInCount: Integer
read GetPluginCount;
published
property Version:
String read GetVersion
write SetVersion;
end;
implementation
constructor TkPlugInManager.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
end;
destructor TkPlugInManager.Destroy;
begin
inherited Destroy;
end;
end.
Für die Plugin-Struktur würde ich folgende verwenden:
Delphi-Quellcode:
unit plugin;
interface
uses
Windows, Classes, SysUtils, Forms, Dialogs;
type
TkPlugin =
class(TObject)
private
FHostApplication: TApplication;
FFileName :
String;
FFileAuthor :
String;
FFileDescription:
String;
FManager : TComponent;
public
constructor Create;
destructor Destroy;
override;
function GetName:
String;
virtual;
stdcall;
function GetAuthor:
String;
virtual;
stdcall;
function GetDescription:
String;
virtual;
stdcall;
function GetNumCommands: Integer;
virtual;
stdcall;
property HostApplication: TApplication
read FHostApplication;
property FileName:
String read FFileName;
property Manager: TComponent
read FManager;
end;
implementation
constructor TkPlugin.Create;
begin
end;
destructor TkPlugin.Destroy;
begin
end;
function TkPlugin.GetName:
String;
var
TheFileName :
array[0..MAX_PATH]
of char;
begin
FillChar(TheFileName, sizeof(TheFileName), #0);
GetModuleFileName(hInstance, TheFileName, sizeof(TheFileName));
result := TheFileName;
end;
function TkPlugin.GetAuthor:
String;
begin
result := FFileAuthor;
end;
function TkPlugin.GetDescription:
String;
begin
result := FFileDescription;
end;
function TkPlugin.GetNumCommands: Integer;
begin
result := 0;
end;
end.
in der Zeile: 14 bekomme ich einen Fehler: "Undeclared identifier: 'FPlugins'."
könnt Ihr mich helfen, ein kleines Plugin-System zu basteln ?
Danke schonmal für sachdienliche Hinweise
paule32