win11でdelphi12.1のfiredacでfirebirdを使う方法

100 views
Skip to first unread message

Japan RAD Studio User Group

unread,
Aug 31, 2024, 10:21:19 AM8/31/24
to Japan RAD Studio User Group
win11でdelphi12.1のfiredacでfirebirdを使いたいのですが、どのfirebirdのversionをインストすればいいのか、教えて下さい
 以前ha,win10でdelphi XE7のfireDacでfireebird2.5が動いていたのですが、上の環境にすると、動かなって困っています。 よろしくお願いします

883

unread,
Sep 4, 2024, 5:42:03 AM9/4/24
to Japan RAD Studio User Group
こんにちわ

firebird2.5 -> 3.0 で fbclient.dll の位置が変わっています。
おそらくですが、FireDACで fbclient.dll を参照しているため、そのパスが違うのではないでしょうか。


2024年8月31日土曜日 23:21:19 UTC+9 Japan RAD Studio User Group:

kaze5...@gmail.com

unread,
Feb 26, 2025, 5:38:11 PMFeb 26
to radstu...@googlegroups.com

tonboです。

お世話になっています。

あるPCで動くpythonコードが他のPCでは動かないことがよく起こっています。

対策の最終目標は、pythonコードを64bit DLL化し、pythonの無い環境で、

Delphiから使用できるようにすることです。

ところが入り口で躓いています。

DLL化を実現できた方はみえますか?

 

PC 開発環境】

Windows11Delphi11Python V3.9.13(venv)

 

Pythonコード例】

他も試みましたが、裏付けなくやっているので省略します。

以下のadd関数をDelphiから使用したい。

 

1.add.pyx

# -*- coding: shift_jis -*-

cdef public int add(int a, int b):

    return a + b

 

2.setup.py

# -*- coding: shift_jis -*-

from setuptools import setup

from Cython.Build import cythonize

setup(

    ext_modules=cythonize("add.pyx", compiler_directives={"language_level": "3"})

 

【コンパイラ】

2つでテストしました。

1.MSVCVisual Studio 2022

2.mingw-w64msys2 でインストール)

 

【ビルド】

1.MSVC の時

  >python setup.py build_ext --inplace

  add.cp39-win_amd64.pydができる。

 

2.mingw-w64 の時

  >set PATH=C:\msys64\mingw64\bin;%PATH%

  >set CC=gcc

  >set CXX=g++   おまけ

  としておいて、

 

  2-1.

   >python setup.py build_ext --inplace

  ・まだ、MSVCcl.exeが使われている。

  add.cp39-win_amd64.pydができる。

 

  2-2.

   >python setup.py build_ext --inplace --compiler=mingw32

  ・エラー

 

DLL のエクスポートシンボルの確認】

add.cp39-win_amd64.pydadd.dllにリネームしておいて、

 

1.Dependencies

2.MSVC

  >dumpbin /EXPORTS mylib.dllDeveloper command prompt for ms2022 から実行)

3.MinGW-w64

  >objdump -T mylib.dll

 

いずれも、add関数は見えません。

 

Pythonで行おうとすれば、冒頭のような様々な問題があります。

DLL化が手軽にできれば解決でき、Delphiの活用場面が増えます。

よろしくお願いします。

久世雄一

unread,
Feb 26, 2025, 7:13:14 PMFeb 26
to radstu...@googlegroups.com
久世です。

Python for Delphi(P4D)ではダメなのでしょうか?
Delphiから、pythonコードを実行出来ます。

2025/02/27 7:38 kaze5...@gmail.com:
--
このメールは Google グループのグループ「Japan RAD Studio User Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/radstudio-jp/000001db889f%2419579770%244c06c650%24%40gmail.com にアクセスしてください。

kaze5...@gmail.com

unread,
Feb 27, 2025, 5:43:35 AMFeb 27
to radstu...@googlegroups.com

久世様

 

早速のご返事、ありがとうございます。

(昼間は外出が多く、すみません)

 

P4Dですと、他のPCにもPython環境が必要で、環境が異なると、

動かないことが起こり得ます。

それを回避するため、Python環境不要なDLLを目標にしたいと思います。

 

Python不要にするために、Nuitkaexeを作る方法もあります。

但しこの場合、Pythonコードで制御からGUIまで全て作る必要があり

非効率的です。

Nuitkaでも試したのですが、NuitkaではDLLは作れないようでした。

 

(先のメールのmylib.dlladd.dllの間違いです。申し訳ありません)

 

---------------------

久世です。

 

Python for Delphi(P4D)ではダメなのでしょうか?

Delphiから、pythonコードを実行出来ます。

 

tonboです。

Kenji ITO

unread,
Feb 27, 2025, 5:48:17 AMFeb 27
to radstu...@googlegroups.com
試していないので全く自信はないのですが、 https://jp-seemore.com/iot/python/29750/#toc11 に書かれている方法はどうでしょうか?

> PyInstallerは、Pythonスクリプトを実行可能ファイルに変換するツールとして知られていますが、DLLの作成にも使用できます。

> 依存関係を含めた完全なスタンドアロンDLLを作成できる点が特徴です。

--
伊藤 賢治( myst...@gmail.com )


2025年2月27日(木) 7:38 <kaze5...@gmail.com>:
--

kaze5...@gmail.com

unread,
Feb 27, 2025, 5:52:59 AMFeb 27
to radstu...@googlegroups.com

伊藤様

情報ありがとうございます。

PyInstallerは知りませんでした。

試してみます。

このディスカッションを表示するには、https://groups.google.com/d/msgid/radstudio-jp/CA%2B3Kku-zmtxkZircPpoy1FTBGPNWX5Dy93uF4d5eSBkQmVnc2g%40mail.gmail.com にアクセスしてください。

fu...@next.matrix.jp

unread,
Feb 27, 2025, 6:21:37 AMFeb 27
to radstu...@googlegroups.com
こんにちは。

最終目標を叶えるものではないのですが、

> あるPCで動くpythonコードが他のPCでは動かないことがよく起こっています。

を解決するのでも良いなら、embeddable python というのもあります。
Delphi使いの方なら、Firebird Embeddedをイメージすれば良いですかね。

https://qiita.com/mm_sys/items/1fd3a50a930dac3db299
によると、
> Pythonを独立したExeファイルとして書き出すPyInstallerの記事を以前書きました。
> しかし、この方法よりも実行がより高速、より軽量な方法がありました。
だそうです。

既に試されてたら申し訳ありません。

Kawamata
> --
> このメールは Google グループのグループ「Japan RAD Studio User Group」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com <mailto:radstudio-jp...@googlegroups.com> にメールを送信してください。
> このディスカッションを表示するには、https://groups.google.com/d/msgid/radstudio-jp/000001db889f%2419579770%244c06c650%24%40gmail.com <https://groups.google.com/d/msgid/radstudio-jp/000001db889f%2419579770%244c06c650%24%40gmail.com?utm_medium=email&utm_source=footer> にアクセスしてください。

kaze5...@gmail.com

unread,
Feb 27, 2025, 6:30:10 AMFeb 27
to radstu...@googlegroups.com
Kawamata様
情報ありがとうございます!
知りませんでした。伊藤様の情報から順番に試していきます。
ただ、私の能力の面から、確認に時間がかかることをご容赦ください。
このメールは Google グループのグループ「Japan RAD Studio User Group」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/radstudio-jp/d3d9a7a0-db4e-4ad2-829d-1a5c56510207%40next.matrix.jp にアクセスしてください。

久世雄一

unread,
Feb 27, 2025, 6:43:18 AMFeb 27
to radstu...@googlegroups.com
tonbo様

久世です。

P4Dの場合、Pythonの豊富なライブラリを使うのではなく、
今回ご提示いただいた足し算が動く程度あれば、Pythonのdllを同梱するだけで
ユーザーが、Pythonを別途インストールする必要はないと思います。

久世雄一

unread,
Feb 27, 2025, 7:12:17 AMFeb 27
to radstu...@googlegroups.com
tonbo様

久世です。

P4Dについて追記です。
Pythonの記述をDLLにするのが必須であれば、Demo9の
「Demo09 Making a Python module as a Dll」
を試すとよいのではないでしょうか?

kaze5...@gmail.com

unread,
Feb 27, 2025, 7:43:16 AMFeb 27
to radstu...@googlegroups.com
久世様
重ねて情報ありがとうございます。助かります。
P4Dは、他のPCではPython環境は不要にできるのですね。
作業が夜だけになるため、確認にお時間を頂くことをご容赦ください。
Pythonコードは、実使用時は、沢山のパッケージを含む大規模なものになります。

fu...@next.matrix.jp

unread,
Feb 27, 2025, 8:29:33 AMFeb 27
to radstu...@googlegroups.com
選択肢が多くなって食傷気味かもしれませんが。。。

> Pythonコードは、実使用時は、沢山のパッケージを含む大規模なものになります。

開発環境で、
pip freeze > requirements.txt
デプロイ先で、
pip install -r requirements.txt
はされてますでしょうか?

これで、かなり環境を揃えることができると思います。OS上のライブラリ等が
無くて失敗した場合はOS上でライブラリ等をインストール。。。という手間は
発生しますが、新たな技術を学習する手間・時間を省けるかもしれませんね。

それと、先のメール、伊藤さんが紹介くださったPyInstallerを否定するような引用に
なってました。伊藤さん、申し訳ありませんでした。

Kawamata

kaze5...@gmail.com

unread,
Feb 27, 2025, 5:03:39 PMFeb 27
to radstu...@googlegroups.com

伊藤様

情報ありがとうございます。

リンクの「サンプルコード4」をやってみました。

math_operations.exe は作れました。

Dllができないか試みましたができません。

ご報告します。

 

-----


Sent: Thursday, February 27, 2025 7:48 PM

試していないので全く自信はないのですが、 https://jp-seemore.com/iot/python/29750/#toc11 に書かれている方法はどうでしょうか?

 

> PyInstallerは、Pythonスクリプトを実行可能ファイルに変換するツールとして知られていますが、DLLの作成にも使用できます。

> 依存関係を含めた完全なスタンドアロンDLLを作成できる点が特徴です。

--

伊藤 賢治

 

 

2025227() 7:38

kaze5...@gmail.com

unread,
Feb 27, 2025, 5:19:11 PMFeb 27
to radstu...@googlegroups.com
Kawamata様
Tonboです。
とんでもないです。
私ではできなかったため助かります。順番に全て確かめます。

私はvenvで、requirements.txt を使っています。
ただ、周囲はcondaが一般的です。
動いている環境はいじられたくない、という人もいます。
それと、コードを作ったあとは、手間は避けたいです。(作り逃げ?)
それらの理由で、DLL化したいと思っています。

Kenji ITO

unread,
Feb 27, 2025, 5:56:13 PMFeb 27
to radstu...@googlegroups.com
tonbo様

私も試してみましたが、pyinstallerではdllは作れないようです。


nuitkaを使ってdllを作れたというコメントを見ましたが、古いコメントなので今も有効かは分かりません。

--
伊藤 賢治( myst...@gmail.com )


2025年2月28日(金) 7:03 <kaze5...@gmail.com>:
--
このメールは Google グループのグループ「Japan RAD Studio User Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/radstudio-jp/000001db8963%247036d190%2450a474b0%24%40gmail.com にアクセスしてください。

kaze5...@gmail.com

unread,
Feb 28, 2025, 5:04:49 PMFeb 28
to radstu...@googlegroups.com

伊藤様

外出が続いていて申し訳ありません。

わざわざご確認いただき、ありがとうございました。

 

Nuitkaも試しました。

  1. add.py

# -*- coding: shift_jis -*-

 

def add(a: int, b: int) -> int:

    return a + b

 

.ビルド

(1)  >nuitka --modulee add.py

add.cp39-win_amd64.pyd ができましたが、add関数は外から見えませんでした。

 

(2) >nuitka --standalone add.py

add.exeはできましたが、dllはできませんでした。

 

add.py の中身を色々変えてみましたが駄目でした。

リンク先を拝見しましたが、駄目なようです。

なかなか難しいです。

 

------------------

Kenji ITO

unread,
Feb 28, 2025, 7:35:46 PMFeb 28
to radstu...@googlegroups.com
いろいろやってみましたが、pythonのコードをdll化するのは難しそうです。他の方々がおっしゃっているように、python4delphiかEmbedded Pythonを使う方が楽で実行速度も速そうな気がします。

PS. Kawamata 様、全然気にしていません。Pythonは全くの素人なので。

> それと、先のメール、伊藤さんが紹介くださったPyInstallerを否定するような引用に
> なってました。伊藤さん、申し訳ありませんでした。
--
伊藤 賢治( myst...@gmail.com )


2025年3月1日(土) 7:04 <kaze5...@gmail.com>:
--
このメールは Google グループのグループ「Japan RAD Studio User Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/radstudio-jp/003801db8a2c%24c43a70c0%244caf5240%24%40gmail.com にアクセスしてください。

kaze5...@gmail.com

unread,
Mar 1, 2025, 3:03:53 PMMar 1
to radstu...@googlegroups.com

伊藤様

>いろいろやってみましたが、pythonのコードをdll化するのは難しそうです。

ありがとうございます。お手数おかけしています。

この後、2点、確かめていきます。

運用時は大規模になるので、実行速度も重要になります。

ところで、伊藤様はCythonも確かめられましたか?yesnoで結構です。

私は、時間はかけましたが、表面的ですので。

 

--------------------------------------

いろいろやってみましたが、pythonのコードをdll化するのは難しそうです。他の方々がおっしゃっているように、python4delphiEmbedded Pythonを使う方が楽で実行速度も速そうな気がします。

 

PS. Kawamata 様、全然気にしていません。Pythonは全くの素人なので。

 

> それと、先のメール、伊藤さんが紹介くださったPyInstallerを否定するような引用に
>
なってました。伊藤さん、申し訳ありませんでした。

--

伊藤 賢治

 

 

202531() 7:04

伊藤様

外出が続いていて申し訳ありません。

わざわざご確認いただき、ありがとうございました。

 

Nuitkaも試しました。

  1. add.py

# -*- coding: shift_jis -*-

 

def add(a: int, b: int) -> int:

    return a + b

 

.ビルド

(1)  >nuitka --modulee add.py

add.cp39-win_amd64.pyd ができましたが、add関数は外から見えませんでした。

 

(2) >nuitka --standalone add.py

add.exeはできましたが、dllはできませんでした。

 

add.py の中身を色々変えてみましたが駄目でした。

リンク先を拝見しましたが、駄目なようです。

なかなか難しいです。

 

------------------

tonbo

 

私も試してみましたが、pyinstallerではdllは作れないようです。

 

 

nuitkaを使ってdllを作れたというコメントを見ましたが、古いコメントなので今も有効かは分かりません。

 

--

伊藤 賢治

 

 

2025228() 7:03

Kenji ITO

unread,
Mar 1, 2025, 4:12:26 PMMar 1
to radstu...@googlegroups.com
pyinstallerがダメと分かってからは 、ChatGPTを相手にCythonを重点的に試しましたが、dllは作れても関数をエクスポートさせることはできませんでした。
--
伊藤 賢治( myst...@gmail.com )


2025年3月2日(日) 5:03 <kaze5...@gmail.com>:
--
このメールは Google グループのグループ「Japan RAD Studio User Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/radstudio-jp/001901db8ae5%240ad5cfd0%2420816f70%24%40gmail.com にアクセスしてください。

kaze5...@gmail.com

unread,
Mar 1, 2025, 5:04:27 PMMar 1
to radstu...@googlegroups.com

伊藤様

Tonboです。

そうでしたか。

Cythonも確かめていただき、本当にありがとうございます!

私も、「Cythonで単純なadd関数が外から見えないなんて、やり方がオカシイ」

と、2Wほどトライしましたが、私では無理でした。

これができると素晴らしいと思うのですが、Web上に動作例が見当たらないのは

不思議ですね。

 

-----------------------------

pyinstallerがダメと分かってからは ChatGPTを相手にCythonを重点的に試しましたが、dllは作れても関数をエクスポートさせることはできませんでした。

--

伊藤 賢治

 

 

202532() 5:03  

このディスカッションを表示するには、https://groups.google.com/d/msgid/radstudio-jp/CA%2B3Kku969K0vzoen%2Bw4PBZ2AV6CbqxgAtmFTX%2BBbL2MrD9z%3D3Q%40mail.gmail.com にアクセスしてください。

Kenji ITO

unread,
Mar 1, 2025, 6:01:00 PMMar 1
to radstu...@googlegroups.com
Pythonのような動的型付けを行う言語のコードをdll化して、C/Pascal のような静的型付けを行う言語から使う方法自体に無理があるのでは?と感じています。逆に Python を Delphi に埋め込んで使用する python4delphi ( https://github.com/pyscripter/python4delphi ) や Embeddable Python ( https://qiita.com/Koki_Takada/items/e8e01743576afe97d4ef )の方が柔軟性があって Python の強みを活かせると思います。python4delphi の使用例として、https://coding-tips-memoranda.com/how-to-use-python4delphi/ に懇切丁寧に書いてあって、大いに参考になりそうです。
--
伊藤 賢治( myst...@gmail.com )


2025年3月2日(日) 7:04 <kaze5...@gmail.com>:
このディスカッションを表示するには、https://groups.google.com/d/msgid/radstudio-jp/002601db8af5%24e1005e80%24a3011b80%24%40gmail.com にアクセスしてください。

kaze5...@gmail.com

unread,
Mar 1, 2025, 10:37:34 PMMar 1
to radstu...@googlegroups.com

伊藤様

続けての情報、本当に助かります。

python4delphiは以前少し見た程度なので、いただいたURLで勉強から始めます。

進展がありましたらご報告いたします。

-----------

Pythonのような動的型付けを行う言語のコードをdll化して、C/Pascal のような静的型付けを行う言語から使う方法自体に無理があるのでは?と感じています。逆に Python Delphi に埋め込んで使用する python4delphi ( https://github.com/pyscripter/python4delphi ) Embeddable Python ( https://qiita.com/Koki_Takada/items/e8e01743576afe97d4ef )の方が柔軟性があって Python の強みを活かせると思います。python4delphi の使用例として、https://coding-tips-memoranda.com/how-to-use-python4delphi/ に懇切丁寧に書いてあって、大いに参考になりそうです。

--

伊藤 賢治

 

 

202532() 7:04  

kaze5...@gmail.com

unread,
Mar 4, 2025, 4:54:46 PMMar 4
to radstu...@googlegroups.com

伊藤様

tonboです。

教えていただいたhttps://coding-tips-memoranda.com/how-to-use-python4delphi/

https://coding-tips-memoranda.com/how-to-use-python4delphi/等を参考に行ってみました。

結果、無事動作しました!

 

以下、変えたところや気付いた点です。

Python4DelphiDelphiの「Getitパッケージマネージャ」で、「Python4Delphi 1.0」をインストール。

Embeddable Python:「python-3.9.13-embed-amd64.zip」をダウンロード。

・ライブラリのインストール:PC内にいくつかPython環境があり、Embeddable外に

インストールされたので、「Python -m」としました。

python39._pth:いくつかインストールしたので、次のようになりました。要検討です。

      python39.zip

      .

      Lib

      Lib\site-packages

      import site

・2番目のURLの「ノートPCの電池残量を表示するプログラムを作成」をやってみました。

 電池のないPCではエラーが出るので少し変更。

      strScrList.Add('import psutil');

      strScrList.Add('btr = psutil.sensors_battery()');

      strScrList.Add('if btr is not None:');

      strScrList.Add('    var1.Value = str("残量:") + str(btr.percent) + str("")');

      strScrList.Add('else:');

      strScrList.Add('    var1.Value = "バッテリー情報が取得できません"');

   動作しました。

 

Embeddable PythonP4Dの組み合わせ、いいですね!

これでPython環境のないどのPCでも手軽に実行でき、作り逃げできそうです^^

目的は達成です。

伊藤様、久世様、Kawamata様、ありがとうございました。

 

なお、CythonでのDLL化も、より高速化など必要な場面が出てきそうです。

今後、皆様の中で出来た方がみえましたら、紹介いただけると嬉しいです。

 

--------------------------
Sent: Sunday, March 2, 2025 8:01 AM
Subject: Re: [radstudio-jp:488] python
コードをdll化しDelphiから使用したい

Kenji ITO

unread,
Mar 4, 2025, 5:00:42 PMMar 4
to radstu...@googlegroups.com
tonbo

目的が達成できたようで何よりです。私はほとんど Python を使っていませんが、Delphi と組み合わせる必要が生じたら、このスレッドを見直して活用したいと思っています。
--
伊藤 賢治( myst...@gmail.com )


2025年3月5日(水) 6:54 <kaze5...@gmail.com>:
--
このメールは Google グループのグループ「Japan RAD Studio User Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/radstudio-jp/000401db8d50%2407b3de10%24171b9a30%24%40gmail.com にアクセスしてください。
Reply all
Reply to author
Forward
0 new messages