Entweder man laesst es in C oder konvertiert nicht, sondern programmiert das Programm mit der
VCL nach.
AdvancedDllStruct ist ein Record mit Zeigern auf Funktionen (und ein paar anderen Elementen) drin.
In Delphi ist das ein Funktionstyp.
Mit der Funktion AdvancedEntry uebergibt man einen Zeiger auf ein ausgefuelltes Record das in einer globalen Variablen gemerkt wird und dann verwendet wird.
Das ist eine einfache Plugin-Architektur.
Wenn es darum geht, nur so ein Record zu erstellen, damit man es mit AdvancedEntry registrieren kann, so ist das durchaus moeglich.
Delphi-Quellcode:
type
PAdvancedDllStruct = ^AdvancedDllStruct;
AdvancedDllStruct = packed record
AddedFile: function(lpFileName: PChar): Integer; stdcall;
AddedKey: function(kKeyRoot: HKEY; lpPath: PChar): Integer; stdcall;
AddedValue: function(kKeyRoot: HKEY; lpPath: PChar; lpValueName: PChar): Integer; stdcall;
AddShared: function(lpSharedFile: PChar): Integer; stdcall;
BackupFile: function(lpFileName: PChar): Integer; stdcall;
CreateDirectory: function(lpDirectory: PChar): Integer; stdcall;
lpCommandLine: PChar;
hbmDialog: HBITMAP;
bSilent: LongBool;
lpdwFlags: PDWORD;
GetVariableString: function(lpVariable: PChar): PChar; stdcall;
GetVariableInt: function(lpVariable: PChar): Integer; stdcall;
SetVariableString: function(lpVariable: PChar; lpValue: PChar): Integer; stdcall;
SetVariableInt: function(lpVariable: PChar; iValue: Integer): Integer; stdcall;
end;
Hier eingehackt, also ohne Garantie.