Leider geht es eben nicht so einfach, da den Aufbau des Records ja von der DLL vorgegeben habe. Es handelt sich bei der DLL ja um
einen fertigen Treiber zum Ansteuern einer PCI Karte.
Und ich habe dummerweise nur den einen Pointer auf eine Function zur Verfügung, weil die DLL, die ansprechen muss, eben
genau an dieser Stelle nur einen Pointer auf eine Funktion erwartet. Diese Funktion kann aber verschiedene Parametersätze
haben. ( SendCommand, SendCommandA, ... SendCommandH )
Deshalb kann ich leider nicht mehrere Pointer in den Record einbauen, weil ja dann die übergebenen Functionen an einer
anderen Stelle im Record stehen.
Ich hatte schon an einen Record mit varianten Inhalt gedacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| TMyStruct = record case TFunnyProcSet of SendCmd: TFunnyProc1; SendCmdA : TFunnyProd2; ... end; |
Aber das geht auch nicht, da ich ja kein TAG zur Auswahl der Funktionen habe. Und ein Set of Functions, damit der
Compiler autom. die richtige Funktion auswählt, ist auch nicht möglich. ( Wenigstens kann ich es nicht ... )
Hier noch mal eine Zusammenfassung meines Problems:
Ich brauche eine Speicherstelle im Record, in der ich einen Pointer auf eine beliebige Funktion setzen kann, die
beliebige ( insgesamt habe ich bisher 14 Varianten gefunden ) Parameter übernehmen und zurückgeben wird.
Moderiert von
Martok: Delphi-Tags hinzugefügt