Hallo board,
ich habe eine Anfrage von einem Kunden. Er hat eine bestehende Pascal Application und aus irgendeinem Grund möchte er, dass ich ihm eine Python Anwendung schreibe.
Jetzt meine Frage, wie können wir das Python Modul aus pascal aufrufen. Da das Modul mehrere Funktionen haben muss wäre mir zuerst eine .exe mit (py2exe) in den Sinn gekommen, die Übergabeparameter einliest. Jedoch ist er unbedingt der Meinung er möchte die Funktionen über eine .dll aufrufen. Hat da wer einen Plan? Kann man mit einem Modul (swig o.ä.) eine dll erstellen?
Danke für Eure Hilfe
Python und Pascal
Ich würde einfach boost-Python verwenden, damit lässt sich schnell eine DLL basteln. Der Zugriff von Pascal sollte dann nicht mehr so schwierig sein.
Die Anforderungen sind aber schon irgendwie ein wenig abenteuerlich.
Die Anforderungen sind aber schon irgendwie ein wenig abenteuerlich.
Das Leben ist wie ein Tennisball.
Danke EyDu,
hast du vielleicht noch einen weiterführenden Link, habe jetzt nur die Erstellung einer C++ dll gefunden welche dann in Python aufgerufen werden kann. Ich benötige es aber anders rum. Aus einem python skript eine dll für c bzw. pascal zu machen..
Danke
Reinhard
PS.: verstehe auch nicht warum das gerade so laufen soll.. aber der Kunde ist König
hast du vielleicht noch einen weiterführenden Link, habe jetzt nur die Erstellung einer C++ dll gefunden welche dann in Python aufgerufen werden kann. Ich benötige es aber anders rum. Aus einem python skript eine dll für c bzw. pascal zu machen..
Danke
Reinhard
PS.: verstehe auch nicht warum das gerade so laufen soll.. aber der Kunde ist König
IMHO sind das zu wenig Informationen. Eine DLL gibt es ja im Grunde schon — den Python-Interpreter, damit man ihn in andere Programme einbinden kann. Wenn man mit Delphi einfach auf C-DLLs zugreifen kann, dann ist es IMHO weniger das Problem wie man Python einem Delphi-Programm zur Verfügung stellt, sondern eher wie man die Delphi-Objekte, die von der Python-Seite gebraucht werden, dort zur Verfügung stellen kann‽
Das Python Skript soll im Endeffekt sich Daten von einem Laser Anschauen mit diese Berechnungen durchführen und dem aufrufenden Programm einen String zurückgeben. Als Parameter für den Aufruf muss ein String und ein integer übergeben werden. Übertrieben einfach soll das Python Skript so aussehen. Wobei eben im Skript (oder auf mehrer .py aufgeteilt) natürlich mit den Parameter gearbeitet wird
Die Grundidee war eben irgendwie eine .dll aus den .py zu erstellen. Dass da natürlich ein Package benötigt wird, welches aus den python Datentypen und Funktion Pascal Datentypen / "Funktionsprototypen" macht war mir klar, wie es geht aber nicht..
Code: Alles auswählen
def CalcThisData(filename, methode):
CalculatedDataPath = "FromanotherSubroutineInsideofPythonScript"
return CalculatedDataPath
Deshalb mein Vorschlag über boost zu gehen. Dann kann ein einfaches Interface mit nativen Daten bereitstellen, diese leicht in Python-Objekte umwandeln und direkt in den Interpreter schubsen. Der Weg scheint mir einfacher zu sein, als der direkte über die Python-DLL.BlackJack hat geschrieben:Wenn man mit Delphi einfach auf C-DLLs zugreifen kann, dann ist es IMHO weniger das Problem wie man Python einem Delphi-Programm zur Verfügung stellt, sondern eher wie man die Delphi-Objekte, die von der Python-Seite gebraucht werden, dort zur Verfügung stellen kann‽
Embedding ist das Stichwort.rkager hat geschrieben:hast du vielleicht noch einen weiterführenden Link, habe jetzt nur die Erstellung einer C++ dll gefunden welche dann in Python aufgerufen werden kann.
Das Leben ist wie ein Tennisball.
Danke EyDu,
damit sollte ich für das erste klar kommen.
Vor Jahren war ich einmal an einem Projekt beteiligt, dass glaub ich über SWIG eine echte .dll erstellt hat welche dann in ein c# Projekt eingebunden wurde. Ich war da aber nur bei der Python Entwicklung beteiligt und habe das nur am Rande mitbekommen und mich hat es damals auch nicht interessiert. Kann sich das jemand vorstellen, wie das gehen könnte?
Danke
Reinhard
damit sollte ich für das erste klar kommen.
Vor Jahren war ich einmal an einem Projekt beteiligt, dass glaub ich über SWIG eine echte .dll erstellt hat welche dann in ein c# Projekt eingebunden wurde. Ich war da aber nur bei der Python Entwicklung beteiligt und habe das nur am Rande mitbekommen und mich hat es damals auch nicht interessiert. Kann sich das jemand vorstellen, wie das gehen könnte?
Danke
Reinhard
Was heißt denn bei dir "echte" DLL? Und was dann "unechte" DLLs? Mit boost bekommst du deine Anforderungen auf jeden Fall schnell hin, die Anzahl der Zeilen Code ist überschaubar. Auch die Komplexität ist nicht besonders hoch. Ob SWIG hier besser geeignet ist (ich habe es bei mir eher in die Ecke "Extensions" eingeordnet) kann ich nicht sagen, musst du wohl selber ausprobieren.
Falls du dir nicht die Abhängigkeiten der Frameworks einfangen willst, könntest du das ganze auch direkt in C machen und die bereits vorhandene Python-DLL verwenden und statisch linken. Hört sich jetzt aber nicht unbedingt nach mehr Spaß an ^^
Falls du dir nicht die Abhängigkeiten der Frameworks einfangen willst, könntest du das ganze auch direkt in C machen und die bereits vorhandene Python-DLL verwenden und statisch linken. Hört sich jetzt aber nicht unbedingt nach mehr Spaß an ^^
Das Leben ist wie ein Tennisball.
Ich glaub ich muss da mit dem Kunden noch einmal ein Wörtchen reden.. viel Schnick Schnack was dann gar nicht gebraucht wird bzw. nur die Fehlersuche verschlimmert.. Vor allem weil Sie den .py Code sowieso haben wollen damit sie selbstständig Änderungen machen können, dann wieder ne .dll draus machen
Bin mittlerweile für c:\python25\python.exe c:\converter.py parm1 parm2
Aber danke für den boost Tipp, schau es mir auf jeden Fall an, und versuch die echte .dll zu erstellen
Reinhard
Bin mittlerweile für c:\python25\python.exe c:\converter.py parm1 parm2
Aber danke für den boost Tipp, schau es mir auf jeden Fall an, und versuch die echte .dll zu erstellen
Reinhard