Wie werden Parametertypen in ext. DLLs "erklärt"?
Verfasst: 12.12.2007 23:12
Hallo,
ich bastle gerade an der Hilfe zu einem meiner Programme.
Dabei geht es darum, daß man die Funktionalität des Programms durch eine eigene, externe DLL erweitern kann.
Die externe DLL muß eine öffentliche Funktion Namens DoAction(Param1.s, Param2.s) haben. Diese Funktion innerhalb der fremden DLL wird von meinem Programm aufgerufen.
Ich weiß jetzt leider nicht wie die beiden Stringparameter außerhalb der PB-Welt übergeben werden. Sind das Zeiger auf nullterminierte Strings oder was hat z.B. ein C-Programmierer zu erwarten, wenn ich schreibe es werden Strings als Parameter übergeben?
Ich poste hier mal den relevanten Teil meiner Hilfe... es wäre nett, wenn jemand, der einer anderen Programiersprache mächtig ist, beurteilen würde, ob mene Angaben ausreichend und vor allen Dingen richtig sind.
Hier auch nochmal der Auszug aus einer passenden Test-DLL, die in PB geschrieben ist:
ich bastle gerade an der Hilfe zu einem meiner Programme.
Dabei geht es darum, daß man die Funktionalität des Programms durch eine eigene, externe DLL erweitern kann.
Die externe DLL muß eine öffentliche Funktion Namens DoAction(Param1.s, Param2.s) haben. Diese Funktion innerhalb der fremden DLL wird von meinem Programm aufgerufen.
Ich weiß jetzt leider nicht wie die beiden Stringparameter außerhalb der PB-Welt übergeben werden. Sind das Zeiger auf nullterminierte Strings oder was hat z.B. ein C-Programmierer zu erwarten, wenn ich schreibe es werden Strings als Parameter übergeben?
Ich poste hier mal den relevanten Teil meiner Hilfe... es wäre nett, wenn jemand, der einer anderen Programiersprache mächtig ist, beurteilen würde, ob mene Angaben ausreichend und vor allen Dingen richtig sind.
Besten Dankmeine Hilfe hat geschrieben: Was tut ein Plugin?
Ein Plugin kann als externe "Programmerweiterung" für DB-Scanner betrachtet werden.
Physikalisch handelt es sich dabei um eine DLL-Datei (Dynamic Link Library), die weitere Funktionen zur Verfügung stellt.
Ein DB-Scanner-kompatibles Plugin hat die Aufgabe die Daten des im Meldungsfenster angeklickten Datensatzes weiterzuverarbeiten. Dazu muß das Plugin (resp. die DLL) zwei öffentliche Funktionen zur Verfügung stellen.
DoAction(Param1.string, Param2.string)
Configuration()
Die Funktion DoAction() wird direkt bei einem Doppelklick aufgerufen. Ihr werden zwei Parameter als nullterminierte Strings übergeben.
In Parameter 1 wird der Wert der Schlüsselspalte übergeben, in Parameter 2 die Werte aller weiteren Spalten - getrennt durch ein #10 ASCII-Zeichen.
Die Funktion Configuration() wird aufgerufen, sobald im Einstellungsfenster der Button [Plugin konfigurieren] gedrückt wird. Hiermit können innerhalb des Plugins nötige Konfigurationen aufgerufen werden. Enthält die DLL keine Funktion mit Namen Configuration(), dann ist der Button deaktiviert.
Die Plugins müssen im Unterverzeichnis "Plugins" innerhalb des Programmverzeichnisses liegen. Alle Dateien, die dort liegen und auf .dll enden, werden als potentielles DB-Scanner Plugin angesehen. Es erfolgt eine Prüfung, ob die DLLs eine öffentliche Funktion namens DoAction() beinhalten. Alle DLLs, die diese Prüfung bestehen, werden im Einstellungsfenster in der Auswahlliste "verwendetes Plugin" angezeigt.

Hier auch nochmal der Auszug aus einer passenden Test-DLL, die in PB geschrieben ist:
Code: Alles auswählen
ProcedureDLL DoAction(Key$, OtherColumns$)
MessageRequester(Key$, OtherColumns$, #MB_ICONINFORMATION)
EndProcedure