Embarquer Python!
Publié : jeu. 19/janv./2006 1:12
Cet exemple montre une utilisation du langage Python dans une application PureBasic. Comme à mon habitude, il n'y a pas d'explication claire donc il vaut mieux avoir une petite connaissance de Python pour apprécier ce code (moi-même je ne connais que le strict minimum) qui est une traduction d'un code en c écrit par Jun Du dans un article du site de Code Project. Merci à lui.
Python (projet open source) est un interpréteur multi os très puissant permettant la programmation procédurale ou objet.
Site officiel de Python:
http://www.python.org/
Livre en français au format informatique à télécharger pour apprendre à programmer en Python:
http://www.ulg.ac.be/cifen/inforef/swi/python.htm
Bien sûr, il vous faudra installer Python pour essayer ce code, quoi que seul la dll soit nécessaire dans cet exemple puisque il n'y a pas d'importation de module externe.
L' exemple suivant exécute une fonction, ici une multiplication avec deux arguments et retourne la valeur que Pb récupère.
Le code Purebasic:
Le script Python avec pour nom py_function.py et à mettre sous le même répertoire que l'exe:

Si quelques un d'entres vous, avez essayé ce code, faites le moi savoir!

Python (projet open source) est un interpréteur multi os très puissant permettant la programmation procédurale ou objet.
Site officiel de Python:
http://www.python.org/
Livre en français au format informatique à télécharger pour apprendre à programmer en Python:
http://www.ulg.ac.be/cifen/inforef/swi/python.htm
Bien sûr, il vous faudra installer Python pour essayer ce code, quoi que seul la dll soit nécessaire dans cet exemple puisque il n'y a pas d'importation de module externe.
L' exemple suivant exécute une fonction, ici une multiplication avec deux arguments et retourne la valeur que Pb récupère.
Le code Purebasic:
Code : Tout sélectionner
Global *pName, *pModule, *pDict, *pFunc, *pValue
Fichier.s="py_function" ;le fichier python sans extension
fonction.s="multiply"
valeur_1.l=12
valeur_2.l=10
; Ce code fait référence à l'article publié par Jun Du
; qui montre par des exemples comment embarquer Python
; dans un autre programme
OpenConsole()
OpenLibrary(0,"python24.dll")
;// Initialize the Python Interpreter
CallFunction(0,"Py_Initialize")
;// Build the name object
;MessageRequester("Info",GetArgV(1))
*pName = CallFunction(0,"PyString_FromString",Fichier)
;// Load the module object
*pModule = CallFunction(0,"PyImport_Import",*pName)
;// pDict is a borrowed reference
*pDict = CallFunction(0,"PyModule_GetDict",*pModule)
;// pFunc is also a borrowed reference
*pFunc = CallFunction(0,"PyDict_GetItemString",*pDict, fonction)
*pArgs = CallFunction(0,"PyTuple_New",2)
*pValue = CallFunction(0,"PyInt_FromLong",valeur_1)
CallFunction(0,"PyTuple_SetItem",*pArgs, 0, *pValue)
CallFunction(0,"Py_DECREF",*pValue)
*pValue = CallFunction(0,"PyInt_FromLong",valeur_2)
CallFunction(0,"PyTuple_SetItem",*pArgs, 1, *pValue)
CallFunction(0,"Py_DECREF",*pValue)
If CallFunction(0,"PyCallable_Check",*pFunc)
*pValue = CallFunction(0,"PyObject_CallObject",*pFunc, *pArgs)
Else
CallFunction(0,"PyErr_Print")
EndIf
PrintN("")
PrintN(Str(CallFunction(0,"PyInt_AsLong",*pValue)))
CallFunction(0,"Py_DECREF",*pArgs)
CallFunction(0,"Py_DECREF",*pValue)
;// Clean up
CallFunction(0,"Py_DECREF",*pModule)
CallFunction(0,"Py_DECREF",*pName)
;// Finish the Python Interpreter
CallFunction(0,"Py_Finalize")
Chaine$ = Input()
CloseLibrary(0)
CloseConsole()
Le script Python avec pour nom py_function.py et à mettre sous le même répertoire que l'exe:
Code : Tout sélectionner
'''py_function.py - Python source designed to '''
'''demonstrate the use of python embedding'''
def multiply(a,b):
c = a*b
print 'The result of a x b :', c
return c

Si quelques un d'entres vous, avez essayé ce code, faites le moi savoir!