Einzelnen Beitrag anzeigen

Blamaster

Registriert seit: 20. Jul 2007
230 Beiträge
 
#1

Dll schnittstelle ohne ShareMem

  Alt 10. Nov 2014, 14:54
Delphi-Version: 7
Hi,

ich möchte eine unabhängige Dll Schnittstelle implementieren. Für ein Delphi Programm sollen also Dlls mit nahezu jeder Sprache erstellt werden können. Dadurch fällt die Verwendung von ShareMem oder FastMM flach.

Daher suche ich nun nach einer Lösung das ganze ohne Delphis hauseigenen Memorymanager umzusetzen.

Dabei gibt es nun wenn ich es bisher richtig gesehen habe zwei Möglichkeiten. Entweder die Verwendung von Pchar bei der man sich selber um die allokation/deallokation kümmern muss, sowie um einen Mechanismus um die passenden Speichergrößen zu reservieren.

Eine andere Möglichkeit ist die Verwendung von WideString was dann praktisch auf den COM Speichermanager hinaus läuft (OleAut32.dll).

Erstmal hörte sich nun die Verwendung von WideString als eine ziemlich gute Idee an. Allerdings habe ich nun gelesen das es da seitens Delphi eventuell zu problemen kommen kann.

Konkret möchte ich in meinem Programm folgende Funktion aus einer DLL die in beliebiger Sprache erstellt wurde einbinden:
function getParam(): WideString; stdcall; Problem ist wohl das Delphi den Rückgabewert als In/Out implementiert hat und sich das mit den meisten anderen Sprachen beißt in denen der Rückgabewert einer Funktion als reiner Out Parameter implementiert wird. (Access violation)

Sehe ich es nun richtig das ich um dieses Problem generell komplett zu umgehen lediglich auf den Rückgabewert WideString verzichten muss und das Ergebnis über einen var Parameter zurückgeben ?
procedure getParam(var resuString: WideString); stdcall;

Gruß und Dank
  Mit Zitat antworten Zitat