博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python For Delphi---更好地协同
阅读量:5764 次
发布时间:2019-06-18

本文共 2494 字,大约阅读时间需要 8 分钟。

先上相关资源的下载吧:

python4delphi:

主页:

下载:

svn checkout http://python4delphi.googlecode.com/svn/trunk/ python4delphi-read-only

 

现在已支持到XE2.

必看(作者):

下面要示范的就是在XE2下完成.其实源码检出后,里面有30多个示例,几乎涵盖了Python4Delphi的所有方面.好吧,我们下面做个简单的加法计算器,主要是演示二者之间的参数传递.

当然,需要在Delphi中先安装上PythonForDelphi控件包,安装不麻烦,可参考上述资料的说明文档.

在XE2中新建一个工程,然后在窗口中依次放上一个TPythonEngine,三个TPythonDelphiVar,TPythonDelphiVar的VarName分别设置为Num1,Num2,Result.再放上三个LabelEdit,分别命名为edtNum1,edtNum2,edtResult.

上代码:

unit FfrmMain;interfaceuses  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, RzPanel,  PythonEngine, PythonGUIInputOutput, RzButton;type  TfrmMain = class(TForm)    memInput: TMemo;    Splitter1: TSplitter;    memOutput: TMemo;    RzPanel1: TRzPanel;    pyEngine: TPythonEngine;    PythonGUIInputOutput1: TPythonGUIInputOutput;    btnExcute: TRzBitBtn;    PythonDelphiVar1: TPythonDelphiVar;    PythonDelphiVar2: TPythonDelphiVar;    edtNum1: TLabeledEdit;    edtNum2: TLabeledEdit;    edtResult: TLabeledEdit;    PythonDelphiVar3: TPythonDelphiVar;    procedure btnExcuteClick(Sender: TObject);    procedure PythonDelphiVar1GetData(Sender: TObject; var Data: Variant);    procedure PythonDelphiVar2GetData(Sender: TObject; var Data: Variant);    procedure PythonDelphiVar3SetData(Sender: TObject; Data: Variant);  private    {
Private declarations } public {
Public declarations } end;var frmMain: TfrmMain;implementation{
$R *.dfm}procedure TfrmMain.btnExcuteClick(Sender: TObject);begin pyEngine.ExecStrings(memInput.Lines);end;procedure TfrmMain.PythonDelphiVar1GetData(Sender: TObject; var Data: Variant);begin Data:=edtNum1.Text;end;procedure TfrmMain.PythonDelphiVar2GetData(Sender: TObject; var Data: Variant);begin Data:=edtNum2.Text;end;procedure TfrmMain.PythonDelphiVar3SetData(Sender: TObject; Data: Variant);begin edtResult.Text:=Data;end;end.

上面窗体中还放了两个memo和一个TPythonGUIInputOutput,这些可以不用.

然后在memInput中输入Python代码:

Result.Value=int(Num1.Value)+int(Num2.Value)

在执行按钮中填加代码:

pyEngine.ExecStrings(memInput.Lines);

当然,可以直接执行上面的Python代码.

在edtNum1中输入一个数字,在edtNum2中输入一个数字,点击按钮,执行python脚本后就可以在edtResult中返回计算结果.

注意:

Result.Value=int(Num1.Value)+int(Num2.Value)

TPythonDelphiVar传人的是字符类型,所以要转换为int后再相加,否则是字符串相加.

这样,我们就完成了Delphi传递参数到Python,Python执行完毕后将结果再返回给Delphi的演示.好了,我们可以好好利用Python,将它很好地嵌入到Delphi中了.

如果要传递更复杂的参数怎么办?我想,或许可以将要传递的参数JSON化,然后将JSON作为参数在二者之间相互传递,这样可以完成更复杂的功能.

 

附上Python JSON文档:

Delphi JSON之SuperObj:

 

转载地址:http://dcgkx.baihongyu.com/

你可能感兴趣的文章
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
jQuery|元素遍历
查看>>
FreeNAS8 ISCSI target & initiator for linux/windows
查看>>
Rainbond 5.0.4版本发布-做最好用的云应用操作系统
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
OracleLinux安装说明
查看>>
Cocos2d-x3.2 Ease加速度
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
使用@media实现IE hack的方法
查看>>
oracle体系结构
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>
Proxy服务器配置_Squid
查看>>
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>
纯DIV+CSS简单实现Tab选项卡左右切换效果
查看>>
redis 常用命令
查看>>
LVS+Keepalived高可用负载均衡集群架构
查看>>
EdbMails Convert EDB to PST
查看>>