Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Funktion zus. in DLL/ActiveX auslagern, auch für andere Sprachen? (https://www.delphipraxis.net/177952-funktion-zus-dll-activex-auslagern-auch-fuer-andere-sprachen.html)

PeterPanino 7. Dez 2013 19:54

Funktion zus. in DLL/ActiveX auslagern, auch für andere Sprachen?
 
Hallo und einen schönen Abend!

Ich möchte eine eigene Funktion, die einen Integerwert erhält und einen String zurückgibt, nicht nur in Delphi-Programmen verfügbar machen, sondern über eine DLL und/oder ActiveX auch anderen Programmiersprachen zur Verfügung stellen. Was muss ich dabei beachten? Welche Aufrufkonventionen sind zu implementieren?

sx2008 8. Dez 2013 11:38

AW: Funktion zus. in DLL/ActiveX auslagern, auch für andere Sprachen?
 
Ich würde ActiveX empfehlen, denn diese Interfaces können von allen modernen Programmiersprachen und auch vielen Anwendungen (Microsoft Office) sowie Scriptsprachen problemlos eingebunden werden ohne dass man irgendwelche Headerdateien übersetzen muss.

Hier ist eine kleine Demoanwendung mit einer ActiveX-Schnittstelle die von einem VBScript aufgerufen wird.
(mal so zum reinschnupper in die Technik)
https://github.com/sx2008/Delphi-Tes...iveXStarterKit

Du brauchst allerdings statt einer Anwendung eine Library (DLL) aber ich find grad nix Passendes.

PeterPanino 8. Dez 2013 18:11

AW: Funktion zus. in DLL/ActiveX auslagern, auch für andere Sprachen?
 
Vielen Dank! Wenn die DLL-Funktion einen String als Result zurückgibt, sollte man dafür als Typ im Sinne einer größtmöglichen Kompatibilität eher PChar oder PWideChar oder WideString verwenden?

PeterPanino 8. Dez 2013 23:55

AW: Funktion zus. in DLL/ActiveX auslagern, auch für andere Sprachen?
 
Muss ich in der DLL ShareMem auch dann einbinden, wenn der von der DLL-Funktion zurückgegebene Typ PCHAR ist? Derzeit funktioniert es in diesem Fall auch ohne ShareMem.

Sir Rufo 9. Dez 2013 00:06

AW: Funktion zus. in DLL/ActiveX auslagern, auch für andere Sprachen?
 
Zitat:

Zitat von PeterPanino (Beitrag 1239044)
Muss ich in der DLL ShareMem auch dann einbinden, wenn der von der DLL-Funktion zurückgegebene Typ PCHAR ist? Derzeit funktioniert es in diesem Fall auch ohne ShareMem.

Nein, ShareMem wird nur benötigt, wenn du Typen benutzt, die von Delphi gemanagt werden (z.B. string, UnicodeString, ...)

PChar, ... sind einfach nur Zeiger
WideString ist ein von Windows gemanagter Typ

himitsu 9. Dez 2013 00:53

AW: Funktion zus. in DLL/ActiveX auslagern, auch für andere Sprachen?
 
ShareMem und Co. bringt auch nur dann etwas, wenn beide Seiten die Sharing-Methode kennen und vorallem auch nutzen.

Und überleg mal, wie groß die Wahrscheinlichkeit ist, daß irgendeine andere Programmiersprache ausgeechnet den Delphi-Speichermanager kennt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz