DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: ajkwhduaduiahdui
今日帖子: 22
在线用户: 2
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/1/24 17:58:08
标题:
请问一下,那个让 Delphi 跑 Python 的控件,有人用起来了吗? 浏览:1035
加入我的收藏
楼主: 复杂的 Python 代码,用 Delphi 怎么去调用?有例子吗?
----------------------------------------------
-
作者:
男 zwrj (zwrj) ★☆☆☆☆ -
盒子活跃会员
2024/1/25 11:26:21
1楼: Python4delphi  不可以吗?
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/1/25 11:57:11
2楼: 说的就是这个控件。

本群有人把它用起来了吗?感受如何?这个玩意不是控件本身的问题,是涉及到 Python 以及整个 Python 环境的问题。
----------------------------------------------
-
作者:
男 mprjcf (mprjcf) ★☆☆☆☆ -
普通会员
2024/1/25 14:09:03
3楼: 下载的p4d中有20多个例程,应该足够你学了。如果不够,您还能找到p4d封装好的numpy,pytorch, matplotlib等,如果还有特别要求的库,您还可以用Lightweight-python-wrappers封装任何您想要的python第三方库。
----------------------------------------------
他们总是取笑失败者,以酷似智者;他们也总是为成功者喝采,以取得赏金。
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2024/1/26 13:38:26
4楼: 鬼 才会用这东西。。
----------------------------------------------
-
作者:
男 mprjcf (mprjcf) ★☆☆☆☆ -
普通会员
2024/1/26 14:00:30
5楼: 机器学戏,人工智能方面,用python是不二选择,跟delphi结合能提供美轮美奂的图形界面,鬼,都用这东西
----------------------------------------------
他们总是取笑失败者,以酷似智者;他们也总是为成功者喝采,以取得赏金。
作者:
男 grjs_2004 (grjsITname) ★☆☆☆☆ -
盒子活跃会员
2024/1/26 18:31:21
6楼: 要錢的,我用過一段時間,後面彈出一個提示,要給錢買序列號,我就卸載掉,不用了
----------------------------------------------
Everyone will to do best!
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2024/1/26 19:43:13
7楼: @mprjcf

这话说多了是不是你自己都信了? 是QT不香还是wx 不爽了?还美轮美奂。。。

官方有关频道一看就知道了  所有视频就讲PY的没人看
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/1/27 0:48:51
8楼: 这个没什么好掐的吧?

要钱?我是去 github 拉的源代码,倒还没有仔细看里面是不是有什么没开源的东西。

我的想法很简单,当年入坑 Delphi 就是它控件多。现在没人做 Delphi 的控件了,但 Python 的各种库很多。所以如果有 Delphi 找不到的库而 Python 有,我又能够在 Delphi 里面把那个库给用起来,那为啥不用?
----------------------------------------------
-
作者:
男 newbuyer (newbuyer) ★☆☆☆☆ -
普通会员
2024/1/27 6:09:03
9楼: 这玩意完全开源,我在app里用过一下子,不过也不属于研究深入,也许不太对,因为我不大懂python,只是用来做其中一种scripter,貌似能用,摘录一点代码不能直接编译供参考:

var
 g_cPyEngine: TPythonEngine;
 g_cPyIO: TPythonInputOutput;
 g_cPyELock: TCriticalSection;

procedure LockPyEngine(cPE: TPythonEngine);
begin
  if g_cPyELock<>nil then g_cPyELock.Enter;
end;

procedure UnlockPyEngine(cPE: TPythonEngine);
begin
  if g_cPyELock<>nil then g_cPyELock.Leave;
end;

function CreatePythonEngine(const sPath: string; eOnSendData: TSendUniDataEvent): TPythonEngine;
begin
  if g_cPyEngine=nil then
  begin
    g_cPyELock := TCriticalSection.Create;
    g_cPyEngine := TPythonEngine.Create(nil);
    g_cPyEngine.FatalAbort := False;
    g_cPyEngine.DllPath := sPath;
    g_cPyIO := TPythonInputOutput.Create(nil);
    g_cPyIO.UnicodeIO := True;
    g_cPyIO.RawOutput := True;
    g_cPyIO.OnSendUniData := eOnSendData;
    g_cPyEngine.IO := g_cPyIO;
    g_cPyEngine.LoadDll;
  end else
  begin
    g_cPyIO.OnSendUniData := eOnSendData;
  end;
  Result := g_cPyEngine;
end;

constructor PLPythonScripter.Create(const sFile: string);
begin
  m_cOutput := TStringList.Create;
  m_cPyEngine := CreatePythonEngine(g_sAppPath+'python', OnSendUniData);

  inherited Create(sFile);
  if not m_cPyEngine.IsHandleValid then Exit;

  // Must after LoadDLL or memory leak in TPyDelphiWrapper
  m_cPyMod := TPythonModule.Create(nil);
  m_cPyMod.Engine := m_cPyEngine;
  m_cPyMod.ModuleName := LibNamePLM;
  m_cPyMod.OnInitialization := PyInit;
  m_cPyDWrap := TPyDelphiWrapper.Create(nil);
  m_cPyDWrap.Engine := m_cPyEngine;
  m_cPyDWrap.Module := m_cPyMod;
  m_cPyMod.Initialize; // Must after LoadDLL
end;

procedure PLPythonScripter.PyInit(Sender: TObject);
begin
  m_cOutput.Clear;
  with Sender as TPythonModule do
  begin
    AddDelphiMethod(FN_PYGET, EvalPLMGet, PAnsiChar(AnsiString(FN_PYGET+'(cat,ident,[params]) -> '+g_yPythonHelps[0])));
//...
  end;
end;

function PLPythonScripter.RunScript(const sScript, sArgs: string;
  var sResult: string; var sError: string): PLErrorCode;
var
  sCode: AnsiString;
  s: string;
begin
  LockPyEngine(m_cPyEngine);
  try
    m_sResult := '';
    sCode := UTF8Encode(sScript);
    s := m_cPyEngine.Run_CommandAsString(sCode, file_input);
      sResult := s;
      if (sResult='') or SameText(sResult, PY_NONE) then
      begin
        sResult := m_cOutput.Text;
      end;
    GetMyVars;
    Result := inherited;
  except
    Result := PLEC_EXCEPTION;
  end;
  UnlockPyEngine(m_cPyEngine);
end;

function PLPythonScripter.EvalPLMGet(pSelf, args: PPyObject): PPyObject;
var
  s: string;
  nCode, n, nFlags: Integer;
  psCat, psIdent, psParams: PAnsiChar;
begin
  Result := nil;
  nFlags := 0;
  with m_cPyEngine do
  begin
    nCode := PyArg_ParseTuple(args, 'ss|si:'+FN_PYGET, @psCat, @psIdent,
      @psParams, @nFlags);
    if nCode <> 0 then
    begin
      n := PLMGet(string(psCat), string(psIdent), UTF8ToString(psParams), s, nFlags);
      Result := m_cPyEngine.ArrayToPyTuple([s, n]);
      //Result := m_cPyEngine.VariantAsPyObject(s);
    end;
  end;
end;
----------------------------------------------
-
作者:
男 pp0123 (pp0123) ★☆☆☆☆ -
普通会员
2024/1/27 7:15:35
10楼: Python 本身是免费, Python4Delphi 也是免费.
但以 Python 建立作界面的 AI 程式库就需要付费

Python 可说是取代 Basic, 给非本科的人随便用用的工具.原不是码奴之选.
问题是很多模拟人工智能的程序, 都祇提供 Python 可用.
那才迫使 Delphi 需要包容 Python.

谁叫 Delphi 没 AI 的库.
----------------------------------------------
-
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2024/1/27 7:17:39
10楼: 这又回到了语言好坏的老问题上了。
个人观点,勿喷。

从运行效率上来讲,Delphi 和 C 是一个层次的。
Delphi 比 C 好用。因为 Delphi 面向对象。
当然 C 用处更广。
如果你觉得 Delphi 运行效率没有C/C++的效率高,不用怀疑,肯定是你的问题,不要甩锅给 Delphi。

从开发效率上来讲,Delphi 和 Python 是一个层次的。
一个控件多,一个库多。开发起来都方便、快捷。
开发 UI ,当然 Delphi 更快。
两者,都比 C++ 、QT,高出了不知多少个级别。

QT 如果不是跨平台,鬼都不会用这个东东。
本来 C++ 就沉重,再封装一层,巨沉重。
这一直是大家希望摆脱的问题。
RUST 现在这么火,就是这个原因。
但是 UI 方面,RUST 也没有搞定。

UI 一直是个难题。
当然 liunx 下,很多人XI惯了没有 GUI。只用 CLI。
CLI 都成了一门开发学问了

希望下一个爆火的语言需要的特质:
  1、跨平台;
  2、UI 开发,能接近 Delphi;
  3、能使用 C/C++ 库;
  4、能方面进行数学运算、WANG络通信、多媒体处理;

其实 Matlab 接近这个需求。
但 Matlab 是商业软件、行业软件。属于小众软件。

题外话:
  这几天了解了一下 Vulkan。
  觉得是个很不错的技术。
  封装封装,很是符合上面爆火语言的需求。
  这家公司,很是牛叉呀!
----------------------------------------------
武汉天气不好
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2024/1/27 7:44:43
11楼: to dbyoung
BCB只差2个编译器就达到你的要求了哈!! 假以时日,应该没有问题。
----------------------------------------------
只有偏执狂才能生存!
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2024/1/27 8:09:56
12楼: 楼上,期待 BCB,不如期待 C#。
这几年 C# 发展很好呀。
都成 2023 年度语言了。
----------------------------------------------
武汉天气不好
作者:
男 wufan314 (真的吗) ★☆☆☆☆ -
普通会员
2024/1/27 22:30:46
13楼: @dbyoung:QT我不懂,但是,从Delphi转向QT开发的WPS Office自从完全转向QT后,效率垃圾的1B!
我也是偶然发现的,百度贴吧这个比较“段落重排”性能的帖子就是我写的,完全转向QT后效率下降20倍还不止,比较方法虽然谈不上十分科学,背后的逻辑也不能说十分严谨,但我想说,大概那就是事实(因为从WPS2012完全转向QT后的WPS2013不大可能将【段落重排】功能改写而换成一个垃圾得多的算法导致效率下降)。

我把原地址贴过来:
原贴:
WPS由Delphi转为QT开发后,效率严重下降,性能降低至少20倍

还被人转到CSDN上去了:
【转】WPS由Delphi转为QT开发后,效率严重下降,性能降低至少20倍
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行76.17188毫秒 RSS