Hello,

I am trying to write a program that is embedding the python interpreter
in order to execute python code.  I don't need to transfer values between
pascal and python.

More specifically, I'm trying to convert to pascal the following:

#include <Python.h>
int main(int argc, char *argv[])
{
 Py_Initialize();
 PyRun_SimpleString("from time import time,ctime\n"
                    "print 'Today is',ctime(time())\n");
 Py_Finalize();
 return 0;
}

I have a minimal unit which includes the needed functions  (h2pas wasn't
able to convert the Python.h  , and i only need those 3 functions anyway ) :

unit Python;
interface
 uses Strings;
 {$LinkLib python2.4}
{$IFDEF FPC}
{$PACKRECORDS C}
{$ENDIF}

 procedure Py_Initialize;external name 'Py_Initialize';
 procedure Py_Finalize;external name 'Py_Finalize';
 function PyRun_SimpleString(_para1:Pchar):longint; external name
'PyRun_SimpleString';
implementation
end.

The pascal program is :

var cmd: PChar;
begin
  cmd:=StrAlloc(256);

  Py_Initialize();
  StrPCopy(cmd, 'print "Hello"');
  PyRun_SimpleString(cmd);   { <--- the program crashes here :
runtime error 216 }
  Py_Finalize();
end.

The problem is that the program crashes at execution with "Runtime
error 216 at <a_memory_address> ".   The backtrace is :

(gdb) backtrace
#0  0xb7e6c3fa in PyOS_Readline () from /usr/lib/libpython2.4.so.1.0
#1  0xb7e6ca7b in PyTokenizer_FromFile () from /usr/lib/libpython2.4.so.1.0
#2  0xb7e6cf5d in PyTokenizer_FromString () from /usr/lib/libpython2.4.so.1.0
#3  0xb7e69fb3 in PyParser_ParseStringFlagsFilename ()
  from /usr/lib/libpython2.4.so.1.0
#4  0xb7e6a091 in PyParser_ParseStringFlags ()
  from /usr/lib/libpython2.4.so.1.0
#5  0xb7eeb408 in PyParser_SimpleParseStringFlags ()
  from /usr/lib/libpython2.4.so.1.0
#6  0xb7eeb8a1 in PyRun_StringFlags () from /usr/lib/libpython2.4.so.1.0
#7  0xb7eecba3 in PyRun_SimpleStringFlags () from /usr/lib/libpython2.4.so.1.0
#8  0xb7eecc21 in PyRun_SimpleString () from /usr/lib/libpython2.4.so.1.0
#9  0x08048324 in main () at runpy.pas:16

What am i doing wrong ?  Any idea ?


Thank you,
Adrian Maier
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to