学习使用:创建 Python 可调用的 Delphi 函数【4】
这是 P4D 最强大的功能 - 让 Python 调用你的 Delphi 代码。
//定义函数包装器
uses PythonEngine, MethodCallBack; // 【第1段】定义 Delphi 函数(必须符合特定签名) function AddNumbers(Self, Args: PPyObject): PPyObject; cdecl; var A, B: Integer; begin with GetPythonEngine do begin // 解析 Python 传来的参数 (两个整数) if PyArg_ParseTuple(Args, 'ii:AddNumbers', @A, @B) <> 0 then begin // 返回两数之和 Result := PyLong_FromLong(A + B); end else Result := nil; // 解析失败返回 nil end; end;
//注册函数到 Python procedure TForm1.RegisterDelphiFunction; begin PythonEngine1.LoadDll; // 【第2段】创建 Python 模块 with PythonModule1 do // TPythonModule 组件 begin ModuleName := 'delphi_utils'; // Python 中 import 的名字 // 添加方法: 方法名, 函数指针, 文档字符串 AddMethod('add', @AddNumbers, 'Add two integers: add(a, b) -> int'); // 【第3段】必须调用,实际注册到 Python Initialize; end; // 【第4段】Python 中调用 Delphi 函数 PythonEngine1.ExecString( 'import delphi_utils' + sLineBreak + 'result = delphi_utils.add(10, 20)' + sLineBreak + 'print(f"10 + 20 = {result}")' ); end;
| PyArg_ParseTuple | 解析 Python 参数,`'ii'` 表示两个整数 |
| cdecl | 必须指定,匹配 Python C API 调用约定 |
| ModuleName | Python 中 `import` 使用的模块名 |
| AddMethod | 将 Delphi 函数暴露给 Python |
浙公网安备 33010602011771号