
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!