From 41d0f5f5bd5a1a071d063cdaff4ad7525dfff980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Kutepow?= Date: Tue, 19 Jan 2021 18:41:18 +0100 Subject: [PATCH 01/10] Projektoptionen --- Packages/Delphi/Delphi 10.3-/Python_D.dpk | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Packages/Delphi/Delphi 10.3-/Python_D.dpk b/Packages/Delphi/Delphi 10.3-/Python_D.dpk index f28c000f..86570074 100644 --- a/Packages/Delphi/Delphi 10.3-/Python_D.dpk +++ b/Packages/Delphi/Delphi 10.3-/Python_D.dpk @@ -1,29 +1,29 @@ package Python_D; +{$R *.res} {$R '..\..\..\Source\PythonEngine.dcr'} {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} -{$DEBUGINFO OFF} +{$DEBUGINFO ON} {$EXTENDEDSYNTAX ON} {$IMPORTEDDATA ON} {$IOCHECKS ON} {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} -{$OPTIMIZATION OFF} +{$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$REFERENCEINFO ON} {$SAFEDIVIDE OFF} -{$STACKFRAMES ON} +{$STACKFRAMES OFF} {$TYPEDADDRESS OFF} {$VARSTRINGCHECKS ON} {$WRITEABLECONST OFF} {$MINENUMSIZE 1} {$IMAGEBASE $400000} -{$DEFINE DEBUG} {$ENDIF IMPLICITBUILDING} {$DESCRIPTION 'Components for Python'} {$IMPLICITBUILD OFF} From 726438e2c3af69fe67c871b1805a29760b3f1cd2 Mon Sep 17 00:00:00 2001 From: Frank Semmling Date: Mon, 25 Jan 2021 13:41:33 +0100 Subject: [PATCH 02/10] DelphiXE: Compilierbare Version --- Packages/Delphi/Delphi 10.3-/Python_D.dproj | 130 ++++++++++++++++++++ Packages/Delphi/Delphi 10.3-/Python_D.res | Bin 0 -> 91996 bytes Source/Definition.Inc | 2 +- Source/PythonEngine.pas | 5 +- 4 files changed, 135 insertions(+), 2 deletions(-) create mode 100644 Packages/Delphi/Delphi 10.3-/Python_D.dproj create mode 100644 Packages/Delphi/Delphi 10.3-/Python_D.res diff --git a/Packages/Delphi/Delphi 10.3-/Python_D.dproj b/Packages/Delphi/Delphi 10.3-/Python_D.dproj new file mode 100644 index 00000000..39258ecc --- /dev/null +++ b/Packages/Delphi/Delphi 10.3-/Python_D.dproj @@ -0,0 +1,130 @@ + + + {0E8E26DF-AEAD-437D-9B90-C3AD0416250B} + Python_D.dpk + True + Debug + Win32 + Package + VCL + DCC32 + 12.3 + + + true + + + true + Base + true + + + true + Base + true + + + 150 + false + true + false + true + S:\Prodat2005\_dcu + S:\Prodat2005\_dcp + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;WinTypes=Windows;WinProcs=Windows;$(DCC_UnitAlias) + false + Components for Python + false + true + 3 + 00400000 + false + + + RELEASE;$(DCC_Define) + 0 + false + false + + + true + DEBUG;$(DCC_Define) + false + true + + + + MainSource + + + + + + + + + + + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + + + Delphi.Personality.12 + Package + + + + Python_D.dpk + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1031 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + TeeChart Standard 9 Components + Microsoft Office 2000 Beispiele für gekapselte Komponenten für Automation Server + Microsoft Office XP Beispiele für gekapselte Komponenten für Automation Server + + + + True + + + 12 + + diff --git a/Packages/Delphi/Delphi 10.3-/Python_D.res b/Packages/Delphi/Delphi 10.3-/Python_D.res new file mode 100644 index 0000000000000000000000000000000000000000..f54145384c49c282bd1dd53a70c8b5e34cd756a6 GIT binary patch literal 91996 zcmV)uK$gD%0000W00030{{R60{{R300000000000000000000?9{~U$00030{{sO3 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ⅇBW= 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⁢dP zY!#-As+8EqMK1T=x`XnSN+qnxKm9M8l?PC*1<0yNsFUPuD4oD$GXAMkCrf@o$t5DtG`U8My2Kar72T)0&z{O{k468L90bsBQK)m6qiCF|N84B?JJ;R8lrihvh);+H(N!y|)j3pC_CDn{`(GOM%&Ku(~xEM91Vw z6KK<&fCPmSI)&GDCz|lyp;M@DY{QHRRfoTJ-!tH>)=ru-Hm%R1={kKnDB}e`4gD-42eWrae3kOUeUx^!+ z%vJ#4cH`8k2JGCm7pG63fy?PqFVv?5XE$eOvi|8M`UaeljG>~k3^QgsTj!=`bTmDj_rov z8g2l*X>Ay)VZ})sTqA`T z9Cn|mKSd#cJAE4GZgbA40i}C@n4m-eP*p|tHe(8^t16J9^W=8pmo~hI-A7IeK`1X6 z*!bOV+`B}M@UzEX+i>JW)8gZ&+Ax_6>$5j6LL#Mf{yW+`uye;=95`?UZcEcoYVg9t zC!=K13(*ifdvcJCRIESFT!2|KXOLSm9uWcr-RAZmK8WtO-$u`&{iunygI~cE55T3$ zg#H^Wq2HY<4xXDG|xnmESn_JS{oAWQL>(D+|i+95t z?3mFbFmv`al$Mo9KEUJf;@2;(L*22Hs4Ol(RY~E-zxnd53ILvZb<2jG`;IN%d+;PC zjv)ZJb*U%=yIHp^62Wdh4BM>e04w1KM_M$C%D0xO6omK>GN3k}!Qa;wfe}(D4Wa=zFaw zAC3vtB3-6A+)Am{`XJBh^19p&_@S)9+Wk59Z>HV0b8^R+dc698<_z_et;IrcY? zHb4u7Brg@C9lJN7n13-I3PJ{!uo7_wPu23}qrIpcCu^o6=?&1mt~N*0DqFkB!@Yjl zOiZe+LO7aKz@R7L^?0!D-96Z`eYYqEGbiApD?J)ajoj17&LWX8rcIlKIdf(p5DdWJ z@+8^Suby6my@yX?N^K3MjvKl0Q#UPE0I+laiG8oG-!XChwgUtJ)wt)Tg(xg2A^>ob z+wa7t&D-$W>NnYKK*r6_BKv4a_c>>s88TslA@s)Sv!`O^4Ob&ZAGXd7N37V>+<>la z+t9sj3(Ak|SE^MkS;brd77=x7(BnoL0NDM~3Uc8ZQ%TPgKzKb;onYpmba3^TM!F0D zL;74Vb?k31TRTR>*`0ryVWx>SVpv@i_t!UwEEqHDxTmito{}$~1=yX6OL!`RWpv+$ z0)=R(s6|up7$nKq9oD_6Wa3OzR~F;iMKdv~rVLTu(B##5EO?IC+4k+b;Nft405`76 zWmw}z1V|jxNqF@&S7834+2oj~M6xW@+l${m^E&DdpTdF}cF$d#DSHndffZykp-T$SRUWMD~R_?!5cg&_Ro)wE*a&+on zB~Cb=-2ZEDxC%az)uK~o1MloY{O}<}w{3!Z?dxhfknWK7NR1_tG{p+k7yvA9LMI?{ zR+qr^x{(U{rElRf0Q6lSCIB$=ujJET`M|sXN6Gsa**iOI%znZWkdfG&?>)Njw6-oJ z&$LSX&%ORp`U+9pAL41iNfy~i3NSbsEHo$Da!YY+

xUN|6$sOVze+x2u!!Vae>t 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 literal 0 HcmV?d00001 diff --git a/Source/Definition.Inc b/Source/Definition.Inc index 8de97164..1bf67f6d 100644 --- a/Source/Definition.Inc +++ b/Source/Definition.Inc @@ -203,7 +203,7 @@ {$ENDIF FPC} {$IFDEF DELPHIXE_OR_HIGHER} - {$DEFINE EXTENDED_RTTI} + //{$DEFINE EXTENDED_RTTI} {$ENDIF DELPHIXE_OR_HIGHER} {$IFDEF DELPHIXE4_OR_HIGHER} diff --git a/Source/PythonEngine.pas b/Source/PythonEngine.pas index d327e8a0..69594e25 100644 --- a/Source/PythonEngine.pas +++ b/Source/PythonEngine.pas @@ -1351,6 +1351,7 @@ TPythonInterface=class(TDynamicDll) Py_BuildValue: TPy_BuildValue; Py_Initialize: procedure; cdecl; + Py_InitializeEx: procedure(initsigs: Integer); cdecl; Py_Exit: procedure( RetVal: Integer); cdecl; PyEval_GetBuiltins: function: PPyObject; cdecl; PyDict_Copy: function(mp: PPyObject):PPyObject; cdecl; @@ -3322,6 +3323,7 @@ procedure TPythonInterface.MapDll; PyArg_ParseTupleAndKeywords := Import('PyArg_ParseTupleAndKeywords'); Py_BuildValue := Import('Py_BuildValue'); Py_Initialize := Import('Py_Initialize'); + Py_InitializeEx := Import('Py_InitializeEx'); PyModule_GetDict := Import('PyModule_GetDict'); PyObject_Str := Import('PyObject_Str'); PyRun_String := Import('PyRun_String'); @@ -4191,7 +4193,8 @@ procedure TPythonEngine.Initialize; AssignPyFlags; if FPythonHome <> '' then Py_SetPythonHome(PWideChar(FPythonHome)); - Py_Initialize; + //Py_Initialize; + Py_InitializeEx(0); if Assigned(Py_IsInitialized) then FInitialized := Py_IsInitialized() <> 0 else From d2d34e3bc057c01b7be29d3386a25784d2f0b11a Mon Sep 17 00:00:00 2001 From: Frank Semmling Date: Wed, 27 Jan 2021 12:10:22 +0100 Subject: [PATCH 03/10] =?UTF-8?q?Compiler-Pfade=20f=C3=BCr=20ExternKompone?= =?UTF-8?q?nten\AllLibraryGroup.groupproj?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Packages/Delphi/Delphi 10.4+/Python.dproj | 18 +++++---- Packages/Delphi/Delphi 10.4+/PythonVcl.dproj | 38 ++++++------------- Packages/Delphi/Delphi 10.4+/dclPython.dproj | 21 +++++----- .../Delphi/Delphi 10.4+/dclPythonVcl.dproj | 22 +++++------ 4 files changed, 44 insertions(+), 55 deletions(-) diff --git a/Packages/Delphi/Delphi 10.4+/Python.dproj b/Packages/Delphi/Delphi 10.4+/Python.dproj index 66b1afcc..cd756c8a 100644 --- a/Packages/Delphi/Delphi 10.4+/Python.dproj +++ b/Packages/Delphi/Delphi 10.4+/Python.dproj @@ -39,10 +39,19 @@ CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= 1033 true + $(_dcu) + $(_dcp) + $(_bpl) + $(_dcp) + $(_dcu) + $(_dcu) Debug - Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + $(CimNamespace);Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + $(CimDefines_Extern);$(DCC_Define) + $(CimSearchPath);$(DCC_UnitSearchPath) + $(CimUnitAliases);$(DCC_UnitAlias) 0 @@ -85,12 +94,7 @@ Python.dpk - - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - + True diff --git a/Packages/Delphi/Delphi 10.4+/PythonVcl.dproj b/Packages/Delphi/Delphi 10.4+/PythonVcl.dproj index 632f69ac..c6fb0eec 100644 --- a/Packages/Delphi/Delphi 10.4+/PythonVcl.dproj +++ b/Packages/Delphi/Delphi 10.4+/PythonVcl.dproj @@ -23,16 +23,6 @@ Base true - - true - Base - true - - - true - Base - true - true Base @@ -55,7 +45,7 @@ true - .\$(Platform)\$(Config) + $(_dcu) .\$(Platform)\$(Config) false false @@ -72,6 +62,11 @@ Python4Delphi - Run-time Engine Package for VCL true $(Auto) + $(_dcp) + $(_bpl) + $(_dcp) + $(_dcu) + $(_dcu) None @@ -81,18 +76,13 @@ None android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar - - None - - - None - - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + $(CimNamespace);Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug true - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - 1033 + $(CimDefines_Extern);$(DCC_Define) + $(CimSearchPath);$(DCC_UnitSearchPath) + $(CimUnitAliases);$(DCC_UnitAlias) DEBUG;$(DCC_Define) @@ -105,7 +95,6 @@ false true - 1033 false @@ -141,12 +130,7 @@ PythonVcl.dpk - - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - + diff --git a/Packages/Delphi/Delphi 10.4+/dclPython.dproj b/Packages/Delphi/Delphi 10.4+/dclPython.dproj index 919d14fb..36e4bea6 100644 --- a/Packages/Delphi/Delphi 10.4+/dclPython.dproj +++ b/Packages/Delphi/Delphi 10.4+/dclPython.dproj @@ -40,7 +40,7 @@ true - .\$(Platform)\$(Config) + $(_dcu) .\$(Platform)\$(Config) false false @@ -57,14 +57,20 @@ Python4Delphi - Design-time Engine Package true $(Auto) + $(_dcp) + $(_bpl) + $(_dcp) + $(_dcu) + $(_dcu) - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + $(CimNamespace);Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug true - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - 1033 rtl;Python;$(DCC_UsePackage) + $(CimDefines_Extern);$(DCC_Define) + $(CimSearchPath);$(DCC_UnitSearchPath) + $(CimUnitAliases);$(DCC_UnitAlias) rtl;$(DCC_UsePackage) @@ -140,12 +146,7 @@ Package - - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - + dclPython.dpk diff --git a/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dproj b/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dproj index 7162f163..0eb412c5 100644 --- a/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dproj +++ b/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dproj @@ -40,7 +40,7 @@ true - .\$(Platform)\$(Config) + $(_dcu) .\$(Platform)\$(Config) false false @@ -57,14 +57,20 @@ Python4Delphi - Design-Time Engine Package for VCL true $(Auto) + $(_dcp) + $(_bpl) + $(_dcp) + $(_dcu) + $(_dcu) - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + $(CimNamespace);Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug true - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - 1033 rtl;vcl;PythonVcl;$(DCC_UsePackage) + $(CimDefines_Extern);$(DCC_Define) + $(CimSearchPath);$(DCC_UnitSearchPath) + $(CimUnitAliases);$(DCC_UnitAlias) rtl;vcl;$(DCC_UsePackage) @@ -80,7 +86,6 @@ false true - 1033 3 @@ -121,12 +126,7 @@ dclPythonVcl.dpk - - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - + From a220e517cbc344753168c83eb2b11f525c34be0f Mon Sep 17 00:00:00 2001 From: Frank Semmling Date: Fri, 29 Jan 2021 18:36:06 +0100 Subject: [PATCH 04/10] =?UTF-8?q?Demos:=20Projektoptionen=20(Such-=20und?= =?UTF-8?q?=20Ausgabepfade)=20sowie=20ung=C3=BCltige=20Methoden-Signaturen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Demos/Demo01/Demo01.dproj | 5 +- Demos/Demo01/Unit1.dfm | 15 +- Demos/Demo02/Demo02.dproj | 696 ++++++++++++++++++++++- Demos/Demo02/Unit1.dfm | 5 + Demos/Demo03/Demo03.dproj | 9 +- Demos/Demo03/Unit1.dfm | 5 + Demos/Demo04/Demo04.dproj | 5 +- Demos/Demo04/Unit1.dfm | Bin 2766 -> 4106 bytes Demos/Demo05/Demo05.dproj | 5 +- Demos/Demo05/Unit1.dfm | 5 + Demos/Demo06/Demo06.dproj | 5 +- Demos/Demo06/Unit1.dfm | 7 +- Demos/Demo07/Demo07.dproj | 5 +- Demos/Demo07/Unit1.dfm | 7 +- Demos/Demo08/Demo08.dproj | 5 +- Demos/Demo08/Unit1.dfm | 7 +- Demos/Demo09/Demo09.dproj | 5 +- Demos/Demo09/Unit1.dfm | 5 +- Demos/Demo09/demodll.dproj | 6 +- Demos/Demo09/module.pas | 8 +- Demos/Demo10_FireDAC/Demo10.dproj | 3 + Demos/Demo10_FireDAC/fmMain.dfm | 3 + Demos/Demo11/ThSort.dfm | 5 + Demos/Demo11/ThrdDemo.dproj | 5 +- Demos/Demo16/Example1/Demo16a.dproj | 5 +- Demos/Demo16/Example1/Unit1.dfm | 5 + Demos/Demo16/Example2/Demo16b.dproj | 5 +- Demos/Demo16/Example2/Unit1.dfm | 5 + Demos/Demo17/Demo17.dproj | 7 +- Demos/Demo17/Unit1.dfm | 3 + Demos/Demo20/Unit1.dfm | 3 + Demos/Demo21/Demo21.dproj | 7 +- Demos/Demo21/Unit1.dfm | 7 +- Demos/Demo22/Demo22.dproj | 5 +- Demos/Demo22/Unit1.dfm | 5 + Demos/Demo23/Demo23.dproj | 7 +- Demos/Demo23/Unit1.dfm | 5 + Demos/Demo25/VarPythUnitTest.dproj | 5 +- Demos/Demo25/fmMain.dfm | 5 + Demos/Demo26/Demo26.dproj | 5 +- Demos/Demo26/Unit1.dfm | 5 + Demos/Demo27/Demo27.dproj | 5 +- Demos/Demo27/Unit1.dfm | 3 + Demos/Demo28/Demo28.dproj | 5 +- Demos/Demo28/Unit1.dfm | 9 +- Demos/Demo29/Demo29.dproj | 5 +- Demos/Demo29/Unit1.dfm | 3 + Demos/Demo30/Demo30.dproj | 5 +- Demos/Demo30/Unit1.dfm | 5 + Demos/Demo31/Demo31.dproj | 5 +- Demos/Demo31/Unit1.dfm | 5 + Demos/Demo32/Demo32.dproj | 5 +- Demos/Demo32/Unit1.dfm | 5 + Demos/Demo33/ThSort.dfm | 5 + Demos/Demo33/ThSort.pas | 2 +- Demos/Demo33/ThrdDemo2.dproj | 45 +- Demos/Demo34/Demo34.dproj | 5 +- Demos/FMX/BasicTypes/PointF/PointF.dproj | 3 + Demos/FMX/FormDemo/FormDemo.dproj | 3 + Demos/FMX/SimpleDemo/Project1.dproj | 3 + Demos/SearchPath1.optset | 13 + Demos/SearchPath2.optset | 13 + Demos/SearchPath3.optset | 13 + Source/PythonEngine.pas | 4 +- 64 files changed, 1014 insertions(+), 70 deletions(-) create mode 100644 Demos/SearchPath1.optset create mode 100644 Demos/SearchPath2.optset create mode 100644 Demos/SearchPath3.optset diff --git a/Demos/Demo01/Demo01.dproj b/Demos/Demo01/Demo01.dproj index 8914c9c7..f7a45e72 100644 --- a/Demos/Demo01/Demo01.dproj +++ b/Demos/Demo01/Demo01.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo01 Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) @@ -66,6 +67,7 @@ Demo01.exe 00400000 x86 + ..\SearchPath1.optset true @@ -121,6 +123,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo01/Unit1.dfm b/Demos/Demo01/Unit1.dfm index 81e0adeb..12dc8bc9 100644 --- a/Demos/Demo01/Unit1.dfm +++ b/Demos/Demo01/Unit1.dfm @@ -98,25 +98,34 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.9' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 32 + Top = 32 end object OpenDialog1: TOpenDialog DefaultExt = '*.py' Filter = 'Python files|*.py|Text files|*.txt|All files|*.*' Title = 'Open' - Left = 176 + Left = 248 + Top = 32 end object SaveDialog1: TSaveDialog DefaultExt = '*.py' Filter = 'Python files|*.py|Text files|*.txt|All files|*.*' Title = 'Save As' - Left = 208 + Left = 344 + Top = 32 end object PythonGUIInputOutput1: TPythonGUIInputOutput UnicodeIO = True RawOutput = False Output = Memo2 - Left = 64 + Left = 144 + Top = 32 end end diff --git a/Demos/Demo02/Demo02.dproj b/Demos/Demo02/Demo02.dproj index 7de9f5d7..2c4dd8de 100644 --- a/Demos/Demo02/Demo02.dproj +++ b/Demos/Demo02/Demo02.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo02.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -130,6 +132,7 @@ Base + ..\SearchPath1.optset Cfg_1 @@ -183,8 +186,699 @@ True True + + + + Demo02.exe + true + + + + + 1 + + + 0 + + + + + classes + 1 + + + classes + 1 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + 1 + + + 1 + + + 0 + + + + + 1 + .framework + + + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + + + + 1 + + + 1 + + + 1 + + + + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + + + + + + + + + 12 + diff --git a/Demos/Demo02/Unit1.dfm b/Demos/Demo02/Unit1.dfm index ae4c0ebe..591ffca0 100644 --- a/Demos/Demo02/Unit1.dfm +++ b/Demos/Demo02/Unit1.dfm @@ -92,6 +92,11 @@ object Form1: TForm1 end end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 32 end diff --git a/Demos/Demo03/Demo03.dproj b/Demos/Demo03/Demo03.dproj index a91c0015..a9de4d9a 100644 --- a/Demos/Demo03/Demo03.dproj +++ b/Demos/Demo03/Demo03.dproj @@ -8,7 +8,7 @@ Application VCL 19.1 - Win64 + Win32 true @@ -57,6 +57,7 @@ true true + false false @@ -68,9 +69,10 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= + ..\SearchPath1.optset - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug true CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName) @@ -127,7 +129,7 @@ MainSource -

Form1` +
Form1
Cfg_2 @@ -135,6 +137,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo03/Unit1.dfm b/Demos/Demo03/Unit1.dfm index 64b330b1..f875ea42 100644 --- a/Demos/Demo03/Unit1.dfm +++ b/Demos/Demo03/Unit1.dfm @@ -111,6 +111,11 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False InitScript.Strings = ( 'import sys' 'print("Python Dll: ", sys.version)' diff --git a/Demos/Demo04/Demo04.dproj b/Demos/Demo04/Demo04.dproj index 55b317e3..c974476c 100644 --- a/Demos/Demo04/Demo04.dproj +++ b/Demos/Demo04/Demo04.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo04.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -128,6 +130,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo04/Unit1.dfm b/Demos/Demo04/Unit1.dfm index e721c9367c3d1a6058822e42cd551fedb67c33f9..736f31ce1ceb0a0dcd515e1ad87a9341154eaee5 100644 GIT binary patch literal 4106 zcmd5x^4j89-NQYpMg@h5n1(NuFK zVO(#sg(7N725UW6vW}C2GpVl_pUrW1d>RMgS3c2mkbP>NqD%>u!6*@zT6Sr|K-N`K zH(GO=>(RJ%b#XWBjKYGj^DCDV^)zD7+Ruf952DD+Zs~%7w))MG45`e? zkY#*|Sj}-my%sqA`yU|bi%BbERI`3IVTf*&EfLs2<=ovlRc$tQ)m4NM=JfoB?7CuEZ|LV{w{3nVVH+_IQG7?nnP zA@~fr+tykQZiS9=4jq30|VJyvb-_W8JDvhNZKwZjMl{Pc;rThKeKha;_5j$1GmQtc_A{y7vM09@UHEbBBBK_T`%{XA zp!Jnfzv|$h{AvZb1gOYK>pUD!$b?PFc+4f&18HK?dKNZGS^flj3f}$6h^=u`H8?*b1G`zhjHzf*W6TEz`3cjfgKeW zwc}ui)?V$338Bc3B{Dpz+thnq`^FOn6s?cG3YYIvkz@P=BT1%&xP;UM;yk}pdT!(+ z`si~7CY+6s8c@ju#*}$6%PWE^j%>{A460*Hm*tp(!?ju%;U!x!(O*JV0a%Z#TO}>r z5-c0Cj=pR9Xd#&wqax&=*hRC?_D4-O?~%n8NIBkZ8rrA{K3tqfSw=#dxm*HviKN)K zO$eBk@Mn{tKhB>YIi^YgnwGl_0G(%+03#$%GM;MhyssF6Y%d`@C4T{P4wV@i2$iUt zJ5Wc?Lc4IEp=aPPAY0o!ZYhTVJzcDw_2^Z4jZx=+u(2lkMzJk`~( zy%%l6j^BZOv;%hh4%^=ed#*53+ss};ws-7p)JHo}cP3n;U*o?c&PDq+Vpm0r>K+|? z+ZG<;B_+QN=7J6boVIRGwAih`Ze$-U0btC`ISo zV9j>29XW$G!K7}}+1jzOYFh~3Y@}u`K5I;bux5bC0X0o-y>tGp^IPXz(HR4cgWdzn za@#vchpvCQW3xh9j~mgU)pehSU74_8BN}Nkny3Vkj-BR3n9YzgWd1Y zL?^G>Urb{KoMQA}z-b<0rK@nmHWTTbKTz|@U~e2m2AK8BU;yW~X6i;wmgd8zJ{~Wi z{~C`i1)$CQFSf2$*q2|JZc|Nzs&G!^W{lFl9PV7_X52dXijy<^uG)ef*$K1CTf_7n z71!VLCvcN0KQpTCB~R3Z8E16gY=qp=C+ms;qllXzG6}K_#MHwI9Dxf=r(5?i`~RI8 lY-{EX0Y1Oe7R_SPoZFWm*l7`5T{g-F-M&|eePH6f{|2*&eD(kU literal 2766 zcmc&$TW=#Z6rLoFCzqyF73H!BVS==3$`Uo*eW9>Go69y*+eFQ@E5t)^Cr)B;?9q&q zHc};cLrDAy-gtvwz;ED>@Pv4VGhP0;?nho6slYu5jXR@UiwoGAsyaievs!<&5iJMn>sF&IZCx6Anri>NkMsGNtWaOIlXiIR!=2VY2}K-97Ns zkCp+;5UzE85pw=^N6t)Dia>G_EGStxVS)zbj`Eop1PN63pri0k5q$OG_VI-9F%5%a zLVT=fpfC##aPd*pFQJFwRQWR6^b{A*=(Vwc7{FIk6G}z&W{f-E0XQ?5kK^U{{>!ge zLKzo43vl%SJ;1m}`?%X>f~jtIr$c%F5kB+>r318u;TKMnVT_-Kv*_h`f1rG`9d^DS z?)0e|`vMm~tYRhtMTASS3qej`1RCIXG1x=|Azlf_#gB?;KlWv%g!1YO>dr*eqY`>U zcV*Wo${o=O<*hN~jg77*XHw8PdI)|(t^ho0HF)Yc5!RXH zt_Dv&jMJ$wt2@~^v<@uGc84u~R%jDZMZh}UNj8}%FN!l`iJ`pi>z&SbX) z1Yr(LJJlT@-(avOgI!eYS$>M3SDNDVNK0ro=MS{%WSjnkl1YiJ3lK!PFs> z*r5fc98@kY)E!Y2z_tG{%p_T z*4DxjjI^1xP#(4Xy7ngTS4XJEcT4U6QX045#MVNp%{_x!UvTuRSr-GSsD-`hUFamaAAXO7cn zoCdey%58XqI3BATb$iJ9Y`m)j?kCVG?}X87xaQp#&h-m$Z5ruolzT&VN&HQH?%BA4 z^sU&7*Md%EZ_Fvmbh{%c>D{gkw$Z1@TKKAETjCj2HKK_9>N22NfGwTB+F}+mP=AI* z45`W-kPDWsf#n+3Y#F)>oZD`rnQ|IZRG{@(%>s|F;4m i{q(H21O!d2(t{-j_vdSRW31Jxjb<%YBP#e9MEMh>MPKaz diff --git a/Demos/Demo05/Demo05.dproj b/Demos/Demo05/Demo05.dproj index 76b0d9ae..65686e95 100644 --- a/Demos/Demo05/Demo05.dproj +++ b/Demos/Demo05/Demo05.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo05.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -127,6 +129,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo05/Unit1.dfm b/Demos/Demo05/Unit1.dfm index 762973c6..0aa3463d 100644 --- a/Demos/Demo05/Unit1.dfm +++ b/Demos/Demo05/Unit1.dfm @@ -94,6 +94,11 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False InitScript.Strings = ( 'import sys' 'print ("Python Dll: ", sys.version)' diff --git a/Demos/Demo06/Demo06.dproj b/Demos/Demo06/Demo06.dproj index 77c3531a..4389c7e5 100644 --- a/Demos/Demo06/Demo06.dproj +++ b/Demos/Demo06/Demo06.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -52,6 +52,7 @@ true true + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= @@ -60,6 +61,7 @@ 00400000 x86 Demo06 + ..\SearchPath1.optset true @@ -118,6 +120,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo06/Unit1.dfm b/Demos/Demo06/Unit1.dfm index 387ce820..a9974cab 100644 --- a/Demos/Demo06/Unit1.dfm +++ b/Demos/Demo06/Unit1.dfm @@ -120,6 +120,11 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False InitScript.Strings = ( 'import sys' 'print ("Python Dll: ", sys.version)' @@ -133,7 +138,7 @@ object Form1: TForm1 OnInitialization = PythonType1Initialization TypeName = 'Point' Prefix = 'Create' - Services.Basic = [bsGetAttrO, bsSetAttrO, bsRepr, bsStr] + Services.Basic = [bsRepr, bsStr, bsGetAttrO, bsSetAttrO] Services.InplaceNumber = [] Services.Number = [] Services.Sequence = [] diff --git a/Demos/Demo07/Demo07.dproj b/Demos/Demo07/Demo07.dproj index 580c213c..84214857 100644 --- a/Demos/Demo07/Demo07.dproj +++ b/Demos/Demo07/Demo07.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -52,6 +52,7 @@ true true + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= @@ -60,6 +61,7 @@ 00400000 x86 Demo07 + ..\SearchPath1.optset true @@ -117,6 +119,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo07/Unit1.dfm b/Demos/Demo07/Unit1.dfm index ced373c5..ee7c9e9b 100644 --- a/Demos/Demo07/Unit1.dfm +++ b/Demos/Demo07/Unit1.dfm @@ -125,6 +125,11 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False InitScript.Strings = ( 'import sys' 'print ("Python Dll: ", sys.version)' @@ -138,7 +143,7 @@ object Form1: TForm1 OnInitialization = PythonType1Initialization TypeName = 'Point' Prefix = 'Create' - Services.Basic = [bsGetAttrO, bsSetAttrO, bsRepr, bsStr] + Services.Basic = [bsRepr, bsStr, bsGetAttrO, bsSetAttrO] Services.InplaceNumber = [] Services.Number = [] Services.Sequence = [] diff --git a/Demos/Demo08/Demo08.dproj b/Demos/Demo08/Demo08.dproj index 54fe398e..e24949cd 100644 --- a/Demos/Demo08/Demo08.dproj +++ b/Demos/Demo08/Demo08.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -52,6 +52,7 @@ true true + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= @@ -60,6 +61,7 @@ 00400000 x86 Demo08 + ..\SearchPath1.optset true @@ -115,6 +117,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo08/Unit1.dfm b/Demos/Demo08/Unit1.dfm index d0ae95b0..abe192b8 100644 --- a/Demos/Demo08/Unit1.dfm +++ b/Demos/Demo08/Unit1.dfm @@ -135,6 +135,11 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 16 Top = 16 @@ -161,7 +166,7 @@ object Form1: TForm1 TypeName = 'Point' Prefix = 'Create' Module = PythonModule1 - Services.Basic = [bsGetAttrO, bsSetAttrO, bsRepr, bsStr, bsRichCompare] + Services.Basic = [bsRepr, bsStr, bsGetAttrO, bsSetAttrO, bsRichCompare] Services.InplaceNumber = [] Services.Number = [] Services.Sequence = [] diff --git a/Demos/Demo09/Demo09.dproj b/Demos/Demo09/Demo09.dproj index 6333c9b6..38ab1e4a 100644 --- a/Demos/Demo09/Demo09.dproj +++ b/Demos/Demo09/Demo09.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo09.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -127,6 +129,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo09/Unit1.dfm b/Demos/Demo09/Unit1.dfm index cddec1ae..8b23c40a 100644 --- a/Demos/Demo09/Unit1.dfm +++ b/Demos/Demo09/Unit1.dfm @@ -83,9 +83,10 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine - DllName = 'python37.dll' + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' APIVersion = 1013 - RegVersion = '3.7' + RegVersion = '3.10' UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 16 diff --git a/Demos/Demo09/demodll.dproj b/Demos/Demo09/demodll.dproj index 3c1e5815..946280b3 100644 --- a/Demos/Demo09/demodll.dproj +++ b/Demos/Demo09/demodll.dproj @@ -7,7 +7,7 @@ 19.1 None True - Win64 + Win32 3 Library @@ -34,6 +34,7 @@ Base true + demodll.pyd true @@ -43,6 +44,7 @@ 1033 System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -78,6 +80,7 @@ Base + ..\SearchPath1.optset Cfg_1 @@ -129,7 +132,6 @@ False - False True True diff --git a/Demos/Demo09/module.pas b/Demos/Demo09/module.pas index 1255cd55..d39270ab 100644 --- a/Demos/Demo09/module.pas +++ b/Demos/Demo09/module.pas @@ -34,6 +34,9 @@ procedure initdemodll; try gEngine := TPythonEngine.Create(nil); gEngine.AutoFinalize := False; + gEngine.UseLastKnownVersion := False; + gEngine.DllName := 'python39.dll'; + gEngine.DllPath := 'E:\EXE\Python'; gEngine.LoadDll; gModule := TPythonModule.Create(nil); gModule.Engine := gEngine; @@ -51,9 +54,8 @@ function PyInit_demodll : PPyObject; gEngine := TPythonEngine.Create(nil); gEngine.AutoFinalize := False; gEngine.UseLastKnownVersion := False; - gEngine.RegVersion := '3.7'; //<-- Use the same version as the python 3.x your main program uses - gEngine.APIVersion := 1013; - gEngine.DllName := 'python37.dll'; + gEngine.DllName := 'python39.dll'; + gEngine.DllPath := 'E:\EXE\Python'; gEngine.LoadDll; gModule := TPythonModule.Create(nil); gModule.Engine := gEngine; diff --git a/Demos/Demo10_FireDAC/Demo10.dproj b/Demos/Demo10_FireDAC/Demo10.dproj index 63410258..c688bb39 100644 --- a/Demos/Demo10_FireDAC/Demo10.dproj +++ b/Demos/Demo10_FireDAC/Demo10.dproj @@ -58,6 +58,7 @@ true true + Demo10.exe 00400000 @@ -67,6 +68,7 @@ 1032 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= .\$(Platform)\$(Config) + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -135,6 +137,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo10_FireDAC/fmMain.dfm b/Demos/Demo10_FireDAC/fmMain.dfm index 092d319f..5a501539 100644 --- a/Demos/Demo10_FireDAC/fmMain.dfm +++ b/Demos/Demo10_FireDAC/fmMain.dfm @@ -395,6 +395,9 @@ object Main: TMain Top = 73 end object PythonEngine: TPythonEngine + UseLastKnownVersion = False + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' IO = PythonGUIInputOutput Left = 84 Top = 289 diff --git a/Demos/Demo11/ThSort.dfm b/Demos/Demo11/ThSort.dfm index 2f5f2710..1c621d7c 100644 --- a/Demos/Demo11/ThSort.dfm +++ b/Demos/Demo11/ThSort.dfm @@ -165,6 +165,11 @@ object ThreadSortForm: TThreadSortForm OnClick = SaveBtnClick end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False InitThreads = True RedirectIO = False Left = 16 diff --git a/Demos/Demo11/ThrdDemo.dproj b/Demos/Demo11/ThrdDemo.dproj index a7112977..0fecc7ff 100644 --- a/Demos/Demo11/ThrdDemo.dproj +++ b/Demos/Demo11/ThrdDemo.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + ThrdDemo.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -132,6 +134,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo16/Example1/Demo16a.dproj b/Demos/Demo16/Example1/Demo16a.dproj index 4e842bf8..5021a701 100644 --- a/Demos/Demo16/Example1/Demo16a.dproj +++ b/Demos/Demo16/Example1/Demo16a.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo16a.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\..\SearchPath2.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -130,6 +132,7 @@ Base + ..\..\SearchPath2.optset Cfg_1 diff --git a/Demos/Demo16/Example1/Unit1.dfm b/Demos/Demo16/Example1/Unit1.dfm index 56e61e47..4ce0e753 100644 --- a/Demos/Demo16/Example1/Unit1.dfm +++ b/Demos/Demo16/Example1/Unit1.dfm @@ -220,6 +220,11 @@ object Form1: TForm1 end end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 8 Top = 400 diff --git a/Demos/Demo16/Example2/Demo16b.dproj b/Demos/Demo16/Example2/Demo16b.dproj index 093ab973..e0491a94 100644 --- a/Demos/Demo16/Example2/Demo16b.dproj +++ b/Demos/Demo16/Example2/Demo16b.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo16b.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\..\SearchPath2.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -130,6 +132,7 @@ Base + ..\..\SearchPath2.optset Cfg_1 diff --git a/Demos/Demo16/Example2/Unit1.dfm b/Demos/Demo16/Example2/Unit1.dfm index c1b00546..09fa559e 100644 --- a/Demos/Demo16/Example2/Unit1.dfm +++ b/Demos/Demo16/Example2/Unit1.dfm @@ -212,6 +212,11 @@ object Form1: TForm1 end end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 8 Top = 400 diff --git a/Demos/Demo17/Demo17.dproj b/Demos/Demo17/Demo17.dproj index 34ec8770..e930f90b 100644 --- a/Demos/Demo17/Demo17.dproj +++ b/Demos/Demo17/Demo17.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo17.exe 00400000 @@ -66,9 +67,10 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug true CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName) @@ -130,6 +132,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo17/Unit1.dfm b/Demos/Demo17/Unit1.dfm index d5def1fd..75615a76 100644 --- a/Demos/Demo17/Unit1.dfm +++ b/Demos/Demo17/Unit1.dfm @@ -95,6 +95,9 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 32 end diff --git a/Demos/Demo20/Unit1.dfm b/Demos/Demo20/Unit1.dfm index a17f8f43..11233084 100644 --- a/Demos/Demo20/Unit1.dfm +++ b/Demos/Demo20/Unit1.dfm @@ -119,6 +119,9 @@ object Form1: TForm1 end end object PythonEngine1: TPythonEngine + UseLastKnownVersion = False + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' AutoLoad = False IO = PythonGUIInputOutput1 Left = 16 diff --git a/Demos/Demo21/Demo21.dproj b/Demos/Demo21/Demo21.dproj index 6923bc14..dd2ee8df 100644 --- a/Demos/Demo21/Demo21.dproj +++ b/Demos/Demo21/Demo21.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo21.exe 00400000 @@ -66,9 +67,10 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug true CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName) @@ -130,6 +132,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo21/Unit1.dfm b/Demos/Demo21/Unit1.dfm index 6a257ea0..8147252e 100644 --- a/Demos/Demo21/Unit1.dfm +++ b/Demos/Demo21/Unit1.dfm @@ -99,6 +99,11 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 32 end @@ -145,7 +150,7 @@ object Form1: TForm1 TypeName = 'Point' Prefix = 'Create' Module = PythonModule1 - Services.Basic = [bsGetAttrO, bsSetAttrO, bsRepr, bsStr] + Services.Basic = [bsRepr, bsStr, bsGetAttrO, bsSetAttrO] Services.InplaceNumber = [] Services.Number = [] Services.Sequence = [] diff --git a/Demos/Demo22/Demo22.dproj b/Demos/Demo22/Demo22.dproj index 31273eb7..4cf45ca5 100644 --- a/Demos/Demo22/Demo22.dproj +++ b/Demos/Demo22/Demo22.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo22.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -131,6 +133,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo22/Unit1.dfm b/Demos/Demo22/Unit1.dfm index a18673d6..fddab8bb 100644 --- a/Demos/Demo22/Unit1.dfm +++ b/Demos/Demo22/Unit1.dfm @@ -82,6 +82,11 @@ object Form1: TForm1 end end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False UseWindowsConsole = True Left = 32 end diff --git a/Demos/Demo23/Demo23.dproj b/Demos/Demo23/Demo23.dproj index 3c6b7a16..237e789e 100644 --- a/Demos/Demo23/Demo23.dproj +++ b/Demos/Demo23/Demo23.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo23.exe 00400000 @@ -66,9 +67,10 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug true CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName) @@ -130,6 +132,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo23/Unit1.dfm b/Demos/Demo23/Unit1.dfm index d4d7b0ad..319484b0 100644 --- a/Demos/Demo23/Unit1.dfm +++ b/Demos/Demo23/Unit1.dfm @@ -78,6 +78,11 @@ object Form1: TForm1 end end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonInputOutput1 Left = 32 end diff --git a/Demos/Demo25/VarPythUnitTest.dproj b/Demos/Demo25/VarPythUnitTest.dproj index e0ad0fb0..4b22f499 100644 --- a/Demos/Demo25/VarPythUnitTest.dproj +++ b/Demos/Demo25/VarPythUnitTest.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -46,6 +46,7 @@ true true + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;System.Win;$(DCC_Namespace) CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= @@ -54,6 +55,7 @@ 00400000 x86 VarPythUnitTest + ..\SearchPath1.optset $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png @@ -102,6 +104,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo25/fmMain.dfm b/Demos/Demo25/fmMain.dfm index 97f5305e..c6cc6651 100644 --- a/Demos/Demo25/fmMain.dfm +++ b/Demos/Demo25/fmMain.dfm @@ -290,6 +290,11 @@ object Main: TMain TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 192 Top = 48 diff --git a/Demos/Demo26/Demo26.dproj b/Demos/Demo26/Demo26.dproj index ee960ee1..ab593738 100644 --- a/Demos/Demo26/Demo26.dproj +++ b/Demos/Demo26/Demo26.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo26.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -130,6 +132,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo26/Unit1.dfm b/Demos/Demo26/Unit1.dfm index 23663ec7..b2883161 100644 --- a/Demos/Demo26/Unit1.dfm +++ b/Demos/Demo26/Unit1.dfm @@ -159,6 +159,11 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 16 Top = 16 diff --git a/Demos/Demo27/Demo27.dproj b/Demos/Demo27/Demo27.dproj index 88c92d12..b558eb5a 100644 --- a/Demos/Demo27/Demo27.dproj +++ b/Demos/Demo27/Demo27.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo27.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 4105 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -133,6 +135,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo27/Unit1.dfm b/Demos/Demo27/Unit1.dfm index c4d1bb2e..18c5d0e5 100644 --- a/Demos/Demo27/Unit1.dfm +++ b/Demos/Demo27/Unit1.dfm @@ -60,6 +60,9 @@ object Form1: TForm1 OnClick = Button1Click end object PythonEngine1: TPythonEngine + UseLastKnownVersion = False + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' IO = PythonGUIInputOutput1 Left = 40 Top = 144 diff --git a/Demos/Demo28/Demo28.dproj b/Demos/Demo28/Demo28.dproj index d6e0c20f..43aa2974 100644 --- a/Demos/Demo28/Demo28.dproj +++ b/Demos/Demo28/Demo28.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo28.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -130,6 +132,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo28/Unit1.dfm b/Demos/Demo28/Unit1.dfm index c73d6d48..d97040d8 100644 --- a/Demos/Demo28/Unit1.dfm +++ b/Demos/Demo28/Unit1.dfm @@ -115,6 +115,11 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 32 end @@ -142,7 +147,7 @@ object Form1: TForm1 TypeName = 'TStringList' Prefix = 'Create' Module = pmP4D - Services.Basic = [bsGetAttrO, bsSetAttrO, bsRepr, bsStr, bsIter] + Services.Basic = [bsRepr, bsStr, bsGetAttrO, bsSetAttrO, bsIter] Services.InplaceNumber = [] Services.Number = [] Services.Sequence = [ssLength, ssItem, ssAssItem] @@ -163,7 +168,7 @@ object Form1: TForm1 TypeName = 'TStringListIterator' Prefix = 'Create' Module = pmP4D - Services.Basic = [bsGetAttrO, bsSetAttrO, bsRepr, bsStr, bsIter, bsIterNext] + Services.Basic = [bsRepr, bsStr, bsGetAttrO, bsSetAttrO, bsIter, bsIterNext] Services.InplaceNumber = [] Services.Number = [] Services.Sequence = [] diff --git a/Demos/Demo29/Demo29.dproj b/Demos/Demo29/Demo29.dproj index 918ea928..2db6046e 100644 --- a/Demos/Demo29/Demo29.dproj +++ b/Demos/Demo29/Demo29.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -52,6 +52,7 @@ true true + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 4105 @@ -60,6 +61,7 @@ 00400000 x86 Demo29 + ..\SearchPath1.optset $(BDS)\bin\default_app.manifest @@ -123,6 +125,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo29/Unit1.dfm b/Demos/Demo29/Unit1.dfm index c149398f..bdf1424c 100644 --- a/Demos/Demo29/Unit1.dfm +++ b/Demos/Demo29/Unit1.dfm @@ -110,6 +110,9 @@ object Form1: TForm1 Top = 336 end object PythonEngine1: TPythonEngine + UseLastKnownVersion = False + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' AutoUnload = False IO = PythonGUIInputOutput1 Left = 168 diff --git a/Demos/Demo30/Demo30.dproj b/Demos/Demo30/Demo30.dproj index c219d66f..fd30ae2f 100644 --- a/Demos/Demo30/Demo30.dproj +++ b/Demos/Demo30/Demo30.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo30.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -131,6 +133,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo30/Unit1.dfm b/Demos/Demo30/Unit1.dfm index 481c588b..4041cfe1 100644 --- a/Demos/Demo30/Unit1.dfm +++ b/Demos/Demo30/Unit1.dfm @@ -108,6 +108,11 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 32 end diff --git a/Demos/Demo31/Demo31.dproj b/Demos/Demo31/Demo31.dproj index 24b947c6..6bde26ea 100644 --- a/Demos/Demo31/Demo31.dproj +++ b/Demos/Demo31/Demo31.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -46,6 +46,7 @@ true true + Demo31 Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) @@ -54,6 +55,7 @@ Demo31.exe 00400000 x86 + ..\SearchPath1.optset true @@ -116,6 +118,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo31/Unit1.dfm b/Demos/Demo31/Unit1.dfm index 7d926a74..427174fd 100644 --- a/Demos/Demo31/Unit1.dfm +++ b/Demos/Demo31/Unit1.dfm @@ -539,6 +539,11 @@ object Form1: TForm1 TabOrder = 2 end object PyEngine: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 16 Top = 16 diff --git a/Demos/Demo32/Demo32.dproj b/Demos/Demo32/Demo32.dproj index 64833a60..c85fec99 100644 --- a/Demos/Demo32/Demo32.dproj +++ b/Demos/Demo32/Demo32.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -46,6 +46,7 @@ true true + Demo32 Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) @@ -54,6 +55,7 @@ Demo32.exe 00400000 x86 + ..\SearchPath1.optset true @@ -107,6 +109,7 @@ Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/Demo32/Unit1.dfm b/Demos/Demo32/Unit1.dfm index caf03f76..197b7e3f 100644 --- a/Demos/Demo32/Unit1.dfm +++ b/Demos/Demo32/Unit1.dfm @@ -147,6 +147,11 @@ object Form1: TForm1 TabOrder = 2 end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 32 Top = 16 diff --git a/Demos/Demo33/ThSort.dfm b/Demos/Demo33/ThSort.dfm index 857c809d..30fd7b4c 100644 --- a/Demos/Demo33/ThSort.dfm +++ b/Demos/Demo33/ThSort.dfm @@ -173,6 +173,11 @@ object ThreadSortForm: TThreadSortForm OnClick = StopBtnClick end object PythonEngine1: TPythonEngine + DllName = 'python39.dll' + DllPath = 'E:\EXE\Python' + APIVersion = 1013 + RegVersion = '3.10' + UseLastKnownVersion = False InitThreads = True PyFlags = [pfDebug, pfInteractive, pfVerbose] RedirectIO = False diff --git a/Demos/Demo33/ThSort.pas b/Demos/Demo33/ThSort.pas index cac6ed8b..0380b4ad 100644 --- a/Demos/Demo33/ThSort.pas +++ b/Demos/Demo33/ThSort.pas @@ -1,6 +1,6 @@ unit ThSort; -{$I Definition.Inc} +{$I '..\..\Source\Definition.Inc'} interface diff --git a/Demos/Demo33/ThrdDemo2.dproj b/Demos/Demo33/ThrdDemo2.dproj index 7fe61c0a..3ab1565a 100644 --- a/Demos/Demo33/ThrdDemo2.dproj +++ b/Demos/Demo33/ThrdDemo2.dproj @@ -9,7 +9,7 @@ Debug VCL True - Win64 + Win32 3 Application @@ -60,12 +60,14 @@ true true + ThrdDemo2.exe ThrdDemo2 Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1049 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -127,6 +129,27 @@ 1033 CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + + + MainSource + + + +
ThreadSortForm
+
+ + Cfg_2 + Base + + + Base + ..\SearchPath1.optset + + + Cfg_1 + Base + +
Delphi.Personality.12 @@ -175,26 +198,6 @@ 12 - - - MainSource - - - -
ThreadSortForm
-
- - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - -
diff --git a/Demos/Demo34/Demo34.dproj b/Demos/Demo34/Demo34.dproj index 93b43433..cf78ff37 100644 --- a/Demos/Demo34/Demo34.dproj +++ b/Demos/Demo34/Demo34.dproj @@ -7,7 +7,7 @@ 19.1 VCL True - Win64 + Win32 3 Application @@ -58,6 +58,7 @@ true true + Demo34.exe 00400000 @@ -66,6 +67,7 @@ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 1033 CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + ..\SearchPath1.optset System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -133,6 +135,7 @@
Base + ..\SearchPath1.optset Cfg_1 diff --git a/Demos/FMX/BasicTypes/PointF/PointF.dproj b/Demos/FMX/BasicTypes/PointF/PointF.dproj index 9748ad15..5b8725f9 100644 --- a/Demos/FMX/BasicTypes/PointF/PointF.dproj +++ b/Demos/FMX/BasicTypes/PointF/PointF.dproj @@ -82,6 +82,7 @@ true true + .\$(Platform)\$(Config) .\$(Platform)\$(Config) @@ -102,6 +103,7 @@ $(BDS)\bin\delphi_PROJECTICON.ico $(BDS)\bin\delphi_PROJECTICNS.icns PointF + ..\..\..\SearchPath3.optset DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage) @@ -273,6 +275,7 @@ Base + ..\..\..\SearchPath3.optset Cfg_1 diff --git a/Demos/FMX/FormDemo/FormDemo.dproj b/Demos/FMX/FormDemo/FormDemo.dproj index e83c0f22..84621471 100644 --- a/Demos/FMX/FormDemo/FormDemo.dproj +++ b/Demos/FMX/FormDemo/FormDemo.dproj @@ -57,6 +57,7 @@ true true + .\$(Platform)\$(Config) .\$(Platform)\$(Config) @@ -69,6 +70,7 @@ $(BDS)\bin\delphi_PROJECTICON.ico $(BDS)\bin\delphi_PROJECTICNS.icns FormDemo + ..\..\SearchPath2.optset DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;svnui;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;DBXOracleDriver;inetdb;FmxTeeUI;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;Python;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;PythonVcl;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;PythonFmx;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;TeeUI;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) @@ -143,6 +145,7 @@ Base + ..\..\SearchPath2.optset Cfg_1 diff --git a/Demos/FMX/SimpleDemo/Project1.dproj b/Demos/FMX/SimpleDemo/Project1.dproj index cbf5d09a..b652f79d 100644 --- a/Demos/FMX/SimpleDemo/Project1.dproj +++ b/Demos/FMX/SimpleDemo/Project1.dproj @@ -77,6 +77,7 @@ true true + .\$(Platform)\$(Config) .\$(Platform)\$(Config) @@ -97,6 +98,7 @@ $(BDS)\bin\delphi_PROJECTICON.ico $(BDS)\bin\delphi_PROJECTICNS.icns Project1 + ..\..\SearchPath2.optset DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;tethering;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;dbexpress;IndyCore;dsnap;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;dbrtl;IndyProtocols;$(DCC_UsePackage) @@ -219,6 +221,7 @@ Base + ..\..\SearchPath2.optset Cfg_1 diff --git a/Demos/SearchPath1.optset b/Demos/SearchPath1.optset new file mode 100644 index 00000000..c10fe27d --- /dev/null +++ b/Demos/SearchPath1.optset @@ -0,0 +1,13 @@ + + + ..\..\Source;..\..\Source\vcl;..\..\Source\fmx;$(DCC_UnitSearchPath) + + + Delphi.Personality.12 + OptionSet + + + + 12 + + diff --git a/Demos/SearchPath2.optset b/Demos/SearchPath2.optset new file mode 100644 index 00000000..0fe60e11 --- /dev/null +++ b/Demos/SearchPath2.optset @@ -0,0 +1,13 @@ + + + ..\..\..\Source;..\..\..\Source\vcl;..\..\..\Source\fmx;$(DCC_UnitSearchPath) + + + Delphi.Personality.12 + OptionSet + + + + 12 + + diff --git a/Demos/SearchPath3.optset b/Demos/SearchPath3.optset new file mode 100644 index 00000000..8258865c --- /dev/null +++ b/Demos/SearchPath3.optset @@ -0,0 +1,13 @@ + + + ..\..\..\..\Source;..\..\..\..\Source\vcl;..\..\..\..\Source\fmx;$(DCC_UnitSearchPath) + + + Delphi.Personality.12 + OptionSet + + + + 12 + + diff --git a/Source/PythonEngine.pas b/Source/PythonEngine.pas index 69594e25..39ca6385 100644 --- a/Source/PythonEngine.pas +++ b/Source/PythonEngine.pas @@ -1955,8 +1955,8 @@ TEngineClient = class(TComponent) //-- -- //------------------------------------------------------- - TDelphiMethod = function ( self, args : PPyObject ) : PPyObject of object; cdecl; - TDelphiMethodWithKW = function ( self, args, keywords : PPyObject ) : PPyObject of object; cdecl; + TDelphiMethod = function ( PSelf, Args : PPyObject ) : PPyObject of object; cdecl; + TDelphiMethodWithKW = function ( PSelf, Args, keywords : PPyObject ) : PPyObject of object; cdecl; TPythonEvent = procedure(Sender: TObject; PSelf, Args: PPyObject; var Result: PPyObject) of object; TMethodsContainer = class; // forward declaration TEventDefs = class; // forward declaration From 55d769efb238ffe41adea4e0beeb234452ad7f95 Mon Sep 17 00:00:00 2001 From: Frank Semmling Date: Tue, 16 Feb 2021 16:45:56 +0100 Subject: [PATCH 05/10] =?UTF-8?q?fehlende=20Resourcen=20f=C3=BCr=20Command?= =?UTF-8?q?Line-Compiler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Packages/Delphi/Delphi 10.4+/Python.res | Bin 0 -> 96 bytes Packages/Delphi/Delphi 10.4+/PythonVcl.res | Bin 0 -> 640 bytes Packages/Delphi/Delphi 10.4+/dclPython.res | Bin 0 -> 640 bytes Packages/Delphi/Delphi 10.4+/dclPythonResource.rc | 7 +++++++ Packages/Delphi/Delphi 10.4+/dclPythonVcl.res | Bin 0 -> 664 bytes .../Delphi/Delphi 10.4+/dclPythonVclResource.rc | 1 + 6 files changed, 8 insertions(+) create mode 100644 Packages/Delphi/Delphi 10.4+/Python.res create mode 100644 Packages/Delphi/Delphi 10.4+/PythonVcl.res create mode 100644 Packages/Delphi/Delphi 10.4+/dclPython.res create mode 100644 Packages/Delphi/Delphi 10.4+/dclPythonResource.rc create mode 100644 Packages/Delphi/Delphi 10.4+/dclPythonVcl.res create mode 100644 Packages/Delphi/Delphi 10.4+/dclPythonVclResource.rc diff --git a/Packages/Delphi/Delphi 10.4+/Python.res b/Packages/Delphi/Delphi 10.4+/Python.res new file mode 100644 index 0000000000000000000000000000000000000000..743599575b02e97248bade49ed2e3eabafe25a0a GIT binary patch literal 96 zcmZQzU|>)H;{X347|28cOhBFu5dZ(r#Sp;Y!{Epe!r;c>&k)4m3uHM0X?F%!AS)QE O%YcEC1!e#vkO2UW7YiT& literal 0 HcmV?d00001 diff --git a/Packages/Delphi/Delphi 10.4+/PythonVcl.res b/Packages/Delphi/Delphi 10.4+/PythonVcl.res new file mode 100644 index 0000000000000000000000000000000000000000..7dfe267f32f51c7c1aa79b11eb21f0826fc8dd3d GIT binary patch literal 640 zcmZ{i%}T>S6opSp7Pc$bu3Wg52-ye)DO9E4PpBbVt!>mmn@Fq+AI`UN?;BXZxp8b- zbYLcT?woVx0y~S;4SzwMm@w0gZdp$?CK~BlSL{cuXT)y2 zho4`P<2M@qdt#@O6Z9uPDcz9>&|9ijp;C{i6`CtYxzvLyfPKS6iWTXY8RNk@>Z=FW z-kuhL<8Q#IUPyqVl&!r$MyRgfzDQ4 literal 0 HcmV?d00001 diff --git a/Packages/Delphi/Delphi 10.4+/dclPython.res b/Packages/Delphi/Delphi 10.4+/dclPython.res new file mode 100644 index 0000000000000000000000000000000000000000..a9f9fbd1b651cf6a3e2c7dd1181ac868e0cddb4d GIT binary patch literal 640 zcmZ{iPfx-?5XE0f55mc_Cl8)YO?ojQF(jxV@ejd^7VZ%fz=|l!!@WC6OMJKd(Lx>hz7dV4ZjDR7sPIT zhTlJu;Blh*LtbmVJzsRQ_cSM9GmBD&aU%a-_Bvc)SN5dsZD34 yBb!QM|EQn?Iml-3+TmBo^Pt!6?R4nCm3m5S<|ADb^>`1LOeA57^=iHyH}7Ap23Cgv literal 0 HcmV?d00001 diff --git a/Packages/Delphi/Delphi 10.4+/dclPythonResource.rc b/Packages/Delphi/Delphi 10.4+/dclPythonResource.rc new file mode 100644 index 00000000..69150ccd --- /dev/null +++ b/Packages/Delphi/Delphi 10.4+/dclPythonResource.rc @@ -0,0 +1,7 @@ +TPyDelphiWrapper BITMAP "..\\..\\Resources\\TPYDELPHIWRAPPER.bmp" +TPythonDelphiVar BITMAP "..\\..\\Resources\\TPYTHONDELPHIVAR.bmp" +TPythonEngine BITMAP "..\\..\\Resources\\TPYTHONENGINE.bmp" +TPythonGUIInputOutput BITMAP "..\\..\\Resources\\TPYTHONGUIINPUTOUTPUT.bmp" +TPythonInputOutput BITMAP "..\\..\\Resources\\TPYTHONINPUTOUTPUT.bmp" +TPythonModule BITMAP "..\\..\\Resources\\TPYTHONMODULE.bmp" +TPythonType BITMAP "..\\..\\Resources\\TPYTHONTYPE.bmp" diff --git a/Packages/Delphi/Delphi 10.4+/dclPythonVcl.res b/Packages/Delphi/Delphi 10.4+/dclPythonVcl.res new file mode 100644 index 0000000000000000000000000000000000000000..06004792ed4d1fa2e0afe577f41f9d3bf92497b0 GIT binary patch literal 664 zcmaiy%}T>i5QR@m7FG~kb|biOEfKO&1gTV|;7_TcTd7UdLYhddpbzKUxc3c=-<^1A z+J#=2o5{?XbLUTzc9E*81$E_g+upwore(fRoxp>-?FeY!J28PcdSol9h=2DLv1uT#&DFdEMpI}55|k@!VdT$sDfNe zO*ALdzP&TWHV2z>-{UEHWunA53+#X8ab&gByop|kT+ms^p8i`yWHqeDu2-^Nhs(G{ zH7-lv!DYv#J)2f+73Op#1KI3pC-@9l8yzE6wMj=V)l+P{FwzxTk3G3yQZdu5Pjjc- G9{d0Ywpwuj literal 0 HcmV?d00001 diff --git a/Packages/Delphi/Delphi 10.4+/dclPythonVclResource.rc b/Packages/Delphi/Delphi 10.4+/dclPythonVclResource.rc new file mode 100644 index 00000000..fbcac3c5 --- /dev/null +++ b/Packages/Delphi/Delphi 10.4+/dclPythonVclResource.rc @@ -0,0 +1 @@ +TPythonGUIInputOutput BITMAP "..\\..\\Resources\\TPYTHONGUIINPUTOUTPUT.bmp" From 8521c908225cd9eebcd7eacfdd0ab54557f0f89d Mon Sep 17 00:00:00 2001 From: Frank Semmling Date: Wed, 17 Feb 2021 14:31:54 +0100 Subject: [PATCH 06/10] E:\EXE\Python3 --- Demos/Demo01/Unit1.dfm | 2 +- Demos/Demo02/Unit1.dfm | 2 +- Demos/Demo03/Unit1.dfm | 2 +- Demos/Demo04/Unit1.dfm | 2 +- Demos/Demo05/Unit1.dfm | 2 +- Demos/Demo06/Unit1.dfm | 2 +- Demos/Demo07/Unit1.dfm | 2 +- Demos/Demo08/Unit1.dfm | 2 +- Demos/Demo09/Unit1.dfm | 2 +- Demos/Demo09/module.pas | 4 ++-- Demos/Demo10_FireDAC/fmMain.dfm | 2 +- Demos/Demo11/ThSort.dfm | 2 +- Demos/Demo16/Example1/Unit1.dfm | 2 +- Demos/Demo16/Example2/Unit1.dfm | 2 +- Demos/Demo17/Unit1.dfm | 2 +- Demos/Demo20/Unit1.dfm | 2 +- Demos/Demo21/Unit1.dfm | 2 +- Demos/Demo22/Unit1.dfm | 2 +- Demos/Demo23/Unit1.dfm | 2 +- Demos/Demo25/fmMain.dfm | 2 +- Demos/Demo26/Unit1.dfm | 2 +- Demos/Demo27/Unit1.dfm | 2 +- Demos/Demo28/Unit1.dfm | 2 +- Demos/Demo29/Unit1.dfm | 2 +- Demos/Demo30/Unit1.dfm | 2 +- Demos/Demo31/Unit1.dfm | 2 +- Demos/Demo32/Unit1.dfm | 2 +- Demos/Demo33/ThSort.dfm | 2 +- 28 files changed, 29 insertions(+), 29 deletions(-) diff --git a/Demos/Demo01/Unit1.dfm b/Demos/Demo01/Unit1.dfm index 12dc8bc9..c6721057 100644 --- a/Demos/Demo01/Unit1.dfm +++ b/Demos/Demo01/Unit1.dfm @@ -99,7 +99,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.9' UseLastKnownVersion = False diff --git a/Demos/Demo02/Unit1.dfm b/Demos/Demo02/Unit1.dfm index 591ffca0..4f74c125 100644 --- a/Demos/Demo02/Unit1.dfm +++ b/Demos/Demo02/Unit1.dfm @@ -93,7 +93,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo03/Unit1.dfm b/Demos/Demo03/Unit1.dfm index f875ea42..63c469f6 100644 --- a/Demos/Demo03/Unit1.dfm +++ b/Demos/Demo03/Unit1.dfm @@ -112,7 +112,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo04/Unit1.dfm b/Demos/Demo04/Unit1.dfm index 736f31ce..09d26e23 100644 --- a/Demos/Demo04/Unit1.dfm +++ b/Demos/Demo04/Unit1.dfm @@ -129,7 +129,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo05/Unit1.dfm b/Demos/Demo05/Unit1.dfm index 0aa3463d..99ab0a5d 100644 --- a/Demos/Demo05/Unit1.dfm +++ b/Demos/Demo05/Unit1.dfm @@ -95,7 +95,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo06/Unit1.dfm b/Demos/Demo06/Unit1.dfm index 8bd51f53..bf0b5595 100644 --- a/Demos/Demo06/Unit1.dfm +++ b/Demos/Demo06/Unit1.dfm @@ -121,7 +121,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo07/Unit1.dfm b/Demos/Demo07/Unit1.dfm index ee7c9e9b..752126e4 100644 --- a/Demos/Demo07/Unit1.dfm +++ b/Demos/Demo07/Unit1.dfm @@ -126,7 +126,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo08/Unit1.dfm b/Demos/Demo08/Unit1.dfm index abe192b8..ec5b660a 100644 --- a/Demos/Demo08/Unit1.dfm +++ b/Demos/Demo08/Unit1.dfm @@ -136,7 +136,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo09/Unit1.dfm b/Demos/Demo09/Unit1.dfm index 8b23c40a..cc142d44 100644 --- a/Demos/Demo09/Unit1.dfm +++ b/Demos/Demo09/Unit1.dfm @@ -84,7 +84,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo09/module.pas b/Demos/Demo09/module.pas index d39270ab..78ff6f34 100644 --- a/Demos/Demo09/module.pas +++ b/Demos/Demo09/module.pas @@ -36,7 +36,7 @@ procedure initdemodll; gEngine.AutoFinalize := False; gEngine.UseLastKnownVersion := False; gEngine.DllName := 'python39.dll'; - gEngine.DllPath := 'E:\EXE\Python'; + gEngine.DllPath := 'E:\EXE\Python3'; gEngine.LoadDll; gModule := TPythonModule.Create(nil); gModule.Engine := gEngine; @@ -55,7 +55,7 @@ function PyInit_demodll : PPyObject; gEngine.AutoFinalize := False; gEngine.UseLastKnownVersion := False; gEngine.DllName := 'python39.dll'; - gEngine.DllPath := 'E:\EXE\Python'; + gEngine.DllPath := 'E:\EXE\Python3'; gEngine.LoadDll; gModule := TPythonModule.Create(nil); gModule.Engine := gEngine; diff --git a/Demos/Demo10_FireDAC/fmMain.dfm b/Demos/Demo10_FireDAC/fmMain.dfm index 5a501539..cc26e8e3 100644 --- a/Demos/Demo10_FireDAC/fmMain.dfm +++ b/Demos/Demo10_FireDAC/fmMain.dfm @@ -397,7 +397,7 @@ object Main: TMain object PythonEngine: TPythonEngine UseLastKnownVersion = False DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' IO = PythonGUIInputOutput Left = 84 Top = 289 diff --git a/Demos/Demo11/ThSort.dfm b/Demos/Demo11/ThSort.dfm index 1c621d7c..8ca71091 100644 --- a/Demos/Demo11/ThSort.dfm +++ b/Demos/Demo11/ThSort.dfm @@ -166,7 +166,7 @@ object ThreadSortForm: TThreadSortForm end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo16/Example1/Unit1.dfm b/Demos/Demo16/Example1/Unit1.dfm index 4ce0e753..e1526fe2 100644 --- a/Demos/Demo16/Example1/Unit1.dfm +++ b/Demos/Demo16/Example1/Unit1.dfm @@ -221,7 +221,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo16/Example2/Unit1.dfm b/Demos/Demo16/Example2/Unit1.dfm index 09fa559e..b20320da 100644 --- a/Demos/Demo16/Example2/Unit1.dfm +++ b/Demos/Demo16/Example2/Unit1.dfm @@ -213,7 +213,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo17/Unit1.dfm b/Demos/Demo17/Unit1.dfm index 75615a76..4dfe0181 100644 --- a/Demos/Demo17/Unit1.dfm +++ b/Demos/Demo17/Unit1.dfm @@ -96,7 +96,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' UseLastKnownVersion = False IO = PythonGUIInputOutput1 Left = 32 diff --git a/Demos/Demo20/Unit1.dfm b/Demos/Demo20/Unit1.dfm index 11233084..e759c3b9 100644 --- a/Demos/Demo20/Unit1.dfm +++ b/Demos/Demo20/Unit1.dfm @@ -121,7 +121,7 @@ object Form1: TForm1 object PythonEngine1: TPythonEngine UseLastKnownVersion = False DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' AutoLoad = False IO = PythonGUIInputOutput1 Left = 16 diff --git a/Demos/Demo21/Unit1.dfm b/Demos/Demo21/Unit1.dfm index 8147252e..4a078fa4 100644 --- a/Demos/Demo21/Unit1.dfm +++ b/Demos/Demo21/Unit1.dfm @@ -100,7 +100,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo22/Unit1.dfm b/Demos/Demo22/Unit1.dfm index 250e083c..9c826608 100644 --- a/Demos/Demo22/Unit1.dfm +++ b/Demos/Demo22/Unit1.dfm @@ -82,7 +82,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo23/Unit1.dfm b/Demos/Demo23/Unit1.dfm index 1bc001c0..4a543317 100644 --- a/Demos/Demo23/Unit1.dfm +++ b/Demos/Demo23/Unit1.dfm @@ -78,7 +78,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo25/fmMain.dfm b/Demos/Demo25/fmMain.dfm index c6cc6651..e4a1564d 100644 --- a/Demos/Demo25/fmMain.dfm +++ b/Demos/Demo25/fmMain.dfm @@ -291,7 +291,7 @@ object Main: TMain end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo26/Unit1.dfm b/Demos/Demo26/Unit1.dfm index b2883161..12a0d05c 100644 --- a/Demos/Demo26/Unit1.dfm +++ b/Demos/Demo26/Unit1.dfm @@ -160,7 +160,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo27/Unit1.dfm b/Demos/Demo27/Unit1.dfm index 18c5d0e5..4471e197 100644 --- a/Demos/Demo27/Unit1.dfm +++ b/Demos/Demo27/Unit1.dfm @@ -62,7 +62,7 @@ object Form1: TForm1 object PythonEngine1: TPythonEngine UseLastKnownVersion = False DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' IO = PythonGUIInputOutput1 Left = 40 Top = 144 diff --git a/Demos/Demo28/Unit1.dfm b/Demos/Demo28/Unit1.dfm index d97040d8..4deff351 100644 --- a/Demos/Demo28/Unit1.dfm +++ b/Demos/Demo28/Unit1.dfm @@ -116,7 +116,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo29/Unit1.dfm b/Demos/Demo29/Unit1.dfm index bdf1424c..75aabc76 100644 --- a/Demos/Demo29/Unit1.dfm +++ b/Demos/Demo29/Unit1.dfm @@ -112,7 +112,7 @@ object Form1: TForm1 object PythonEngine1: TPythonEngine UseLastKnownVersion = False DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' AutoUnload = False IO = PythonGUIInputOutput1 Left = 168 diff --git a/Demos/Demo30/Unit1.dfm b/Demos/Demo30/Unit1.dfm index 4041cfe1..53f786bf 100644 --- a/Demos/Demo30/Unit1.dfm +++ b/Demos/Demo30/Unit1.dfm @@ -109,7 +109,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo31/Unit1.dfm b/Demos/Demo31/Unit1.dfm index 427174fd..178369e5 100644 --- a/Demos/Demo31/Unit1.dfm +++ b/Demos/Demo31/Unit1.dfm @@ -540,7 +540,7 @@ object Form1: TForm1 end object PyEngine: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo32/Unit1.dfm b/Demos/Demo32/Unit1.dfm index 197b7e3f..d336ed9d 100644 --- a/Demos/Demo32/Unit1.dfm +++ b/Demos/Demo32/Unit1.dfm @@ -148,7 +148,7 @@ object Form1: TForm1 end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False diff --git a/Demos/Demo33/ThSort.dfm b/Demos/Demo33/ThSort.dfm index 30fd7b4c..77402f17 100644 --- a/Demos/Demo33/ThSort.dfm +++ b/Demos/Demo33/ThSort.dfm @@ -174,7 +174,7 @@ object ThreadSortForm: TThreadSortForm end object PythonEngine1: TPythonEngine DllName = 'python39.dll' - DllPath = 'E:\EXE\Python' + DllPath = 'E:\EXE\Python3' APIVersion = 1013 RegVersion = '3.10' UseLastKnownVersion = False From 1b5a71469a9037891cba78bf9f2200793b7ed043 Mon Sep 17 00:00:00 2001 From: Frank <34280291+geheimniswelten@users.noreply.github.com> Date: Thu, 24 Jun 2021 16:42:29 +0200 Subject: [PATCH 07/10] ImplicitBuild OFF --- Packages/Delphi/Delphi 10.4+/Python.dpk | 2 +- Packages/Delphi/Delphi 10.4+/Python.dproj | 1 + Packages/Delphi/Delphi 10.4+/PythonFmx.dpk | 2 +- Packages/Delphi/Delphi 10.4+/PythonFmx.dproj | 1 + Packages/Delphi/Delphi 10.4+/PythonVcl.dpk | 2 +- Packages/Delphi/Delphi 10.4+/PythonVcl.dproj | 1 + Packages/Delphi/Delphi 10.4+/dclPython.dpk | 2 +- Packages/Delphi/Delphi 10.4+/dclPython.dproj | 1 + Packages/Delphi/Delphi 10.4+/dclPythonFmx.dpk | 2 +- Packages/Delphi/Delphi 10.4+/dclPythonFmx.dproj | 1 + Packages/Delphi/Delphi 10.4+/dclPythonVcl.dpk | 2 +- Packages/Delphi/Delphi 10.4+/dclPythonVcl.dproj | 1 + 12 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Packages/Delphi/Delphi 10.4+/Python.dpk b/Packages/Delphi/Delphi 10.4+/Python.dpk index ee74a77c..97f9cf13 100644 --- a/Packages/Delphi/Delphi 10.4+/Python.dpk +++ b/Packages/Delphi/Delphi 10.4+/Python.dpk @@ -27,7 +27,7 @@ package Python; {$DESCRIPTION 'Python4Delphi - Run-time Engine Package'} {$LIBSUFFIX AUTO} {$RUNONLY} -{$IMPLICITBUILD ON} +{$IMPLICITBUILD OFF} requires DesignIDE, diff --git a/Packages/Delphi/Delphi 10.4+/Python.dproj b/Packages/Delphi/Delphi 10.4+/Python.dproj index cd756c8a..85526ac6 100644 --- a/Packages/Delphi/Delphi 10.4+/Python.dproj +++ b/Packages/Delphi/Delphi 10.4+/Python.dproj @@ -38,6 +38,7 @@ true CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= 1033 + true true $(_dcu) $(_dcp) diff --git a/Packages/Delphi/Delphi 10.4+/PythonFmx.dpk b/Packages/Delphi/Delphi 10.4+/PythonFmx.dpk index 33ebc779..a3d2e7d9 100644 --- a/Packages/Delphi/Delphi 10.4+/PythonFmx.dpk +++ b/Packages/Delphi/Delphi 10.4+/PythonFmx.dpk @@ -28,7 +28,7 @@ package PythonFmx; {$DESCRIPTION 'Python4Delphi - Run-time Engine Package for FMX'} {$LIBSUFFIX AUTO} {$RUNONLY} -{$IMPLICITBUILD ON} +{$IMPLICITBUILD OFF} requires rtl, diff --git a/Packages/Delphi/Delphi 10.4+/PythonFmx.dproj b/Packages/Delphi/Delphi 10.4+/PythonFmx.dproj index a691f0d6..f4c2075a 100644 --- a/Packages/Delphi/Delphi 10.4+/PythonFmx.dproj +++ b/Packages/Delphi/Delphi 10.4+/PythonFmx.dproj @@ -66,6 +66,7 @@ true System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) All + true PythonFmx 1033 CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= diff --git a/Packages/Delphi/Delphi 10.4+/PythonVcl.dpk b/Packages/Delphi/Delphi 10.4+/PythonVcl.dpk index 0c3eafe7..6014ad16 100644 --- a/Packages/Delphi/Delphi 10.4+/PythonVcl.dpk +++ b/Packages/Delphi/Delphi 10.4+/PythonVcl.dpk @@ -28,7 +28,7 @@ package PythonVcl; {$DESCRIPTION 'Python4Delphi - Run-time Engine Package for VCL'} {$LIBSUFFIX AUTO} {$RUNONLY} -{$IMPLICITBUILD ON} +{$IMPLICITBUILD OFF} requires rtl, diff --git a/Packages/Delphi/Delphi 10.4+/PythonVcl.dproj b/Packages/Delphi/Delphi 10.4+/PythonVcl.dproj index c6fb0eec..539a47ec 100644 --- a/Packages/Delphi/Delphi 10.4+/PythonVcl.dproj +++ b/Packages/Delphi/Delphi 10.4+/PythonVcl.dproj @@ -56,6 +56,7 @@ true System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) All + true PythonVcl 1033 CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= diff --git a/Packages/Delphi/Delphi 10.4+/dclPython.dpk b/Packages/Delphi/Delphi 10.4+/dclPython.dpk index 5c4287aa..bf873d1f 100644 --- a/Packages/Delphi/Delphi 10.4+/dclPython.dpk +++ b/Packages/Delphi/Delphi 10.4+/dclPython.dpk @@ -29,7 +29,7 @@ package dclPython; {$DESCRIPTION 'Python4Delphi - Design-time Engine Package'} {$LIBSUFFIX AUTO} {$DESIGNONLY} -{$IMPLICITBUILD ON} +{$IMPLICITBUILD OFF} requires rtl, diff --git a/Packages/Delphi/Delphi 10.4+/dclPython.dproj b/Packages/Delphi/Delphi 10.4+/dclPython.dproj index 36e4bea6..f26f97cb 100644 --- a/Packages/Delphi/Delphi 10.4+/dclPython.dproj +++ b/Packages/Delphi/Delphi 10.4+/dclPython.dproj @@ -51,6 +51,7 @@ true System;Xml;Data;Datasnap;Web;Soap;Vcl;$(DCC_Namespace) All + true dclPython 1033 CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= diff --git a/Packages/Delphi/Delphi 10.4+/dclPythonFmx.dpk b/Packages/Delphi/Delphi 10.4+/dclPythonFmx.dpk index 1092117e..4a11cf54 100644 --- a/Packages/Delphi/Delphi 10.4+/dclPythonFmx.dpk +++ b/Packages/Delphi/Delphi 10.4+/dclPythonFmx.dpk @@ -29,7 +29,7 @@ package dclPythonFmx; {$DESCRIPTION 'Python4Delphi - Design-time Engine Package for FMX'} {$LIBSUFFIX AUTO} {$DESIGNONLY} -{$IMPLICITBUILD ON} +{$IMPLICITBUILD OFF} requires rtl, diff --git a/Packages/Delphi/Delphi 10.4+/dclPythonFmx.dproj b/Packages/Delphi/Delphi 10.4+/dclPythonFmx.dproj index 0f1215d1..96e289f1 100644 --- a/Packages/Delphi/Delphi 10.4+/dclPythonFmx.dproj +++ b/Packages/Delphi/Delphi 10.4+/dclPythonFmx.dproj @@ -81,6 +81,7 @@ true System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) All + true dclPythonFmx 1033 CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= diff --git a/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dpk b/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dpk index 08223df5..09914c85 100644 --- a/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dpk +++ b/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dpk @@ -29,7 +29,7 @@ package dclPythonVcl; {$DESCRIPTION 'Python4Delphi - Design-Time Engine Package for VCL'} {$LIBSUFFIX AUTO} {$DESIGNONLY} -{$IMPLICITBUILD ON} +{$IMPLICITBUILD OFF} requires rtl, diff --git a/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dproj b/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dproj index 0eb412c5..84346d26 100644 --- a/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dproj +++ b/Packages/Delphi/Delphi 10.4+/dclPythonVcl.dproj @@ -51,6 +51,7 @@ true System;Xml;Data;Datasnap;Web;Soap;Vcl;$(DCC_Namespace) All + true dclPythonVcl 1033 CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= From a10bacab47078cbac1dc64bd6687bb544c108c16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Kutepow?= Date: Mon, 9 Aug 2021 15:37:05 +0200 Subject: [PATCH 08/10] loaddll bugfix --- Source/PythonEngine.pas | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/Source/PythonEngine.pas b/Source/PythonEngine.pas index 6628d224..be84f764 100644 --- a/Source/PythonEngine.pas +++ b/Source/PythonEngine.pas @@ -2909,18 +2909,48 @@ procedure TPythonInputOutput.UpdateCurrentThreadLine; (** **) (*******************************************************) +{$IF not Declared(SafeLoadLibraryEx)} +function SafeLoadLibraryEx(const Filename: string; dwFlags: DWORD; ErrorMode: UINT=SEM_NOOPENFILEERRORBOX): HMODULE; +var + OldMode: UINT; + {$IFDEF CPUX86} + FPUControlWord: Word; + {$ENDIF} +begin + OldMode := SetErrorMode(ErrorMode); + {$IFDEF CPUX86} + FPUControlWord := Get8087CW(); + {$ENDIF} + try + Result := LoadLibraryEx(PChar(Filename), 0, dwFlags); + {$IF Defined(CPUX86) and (CompilerVersion >= 30.0)} + TestAndClearFPUExceptions(0); + {$IFEND} + finally + {$IFDEF CPUX86} + Set8087CW(FPUControlWord); + {$ENDIF} + SetErrorMode(OldMode); + end; +end; +{$IFEND} + procedure TDynamicDll.DoOpenDll(const aDllName : string); +const + LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = $00000100; + LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = $00001000; begin if not IsHandleValid then begin FDllName := aDllName; {$IFDEF MSWINDOWS} - FDLLHandle := SafeLoadLibrary( + FDLLHandle := SafeLoadLibraryEx( {$IFDEF FPC} PAnsiChar(AnsiString(GetDllPath+DllName)) {$ELSE} GetDllPath+DllName - {$ENDIF}); + {$ENDIF}, + LOAD_LIBRARY_SEARCH_DEFAULT_DIRS or LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR); {$ELSE} //Linux: need here RTLD_GLOBAL, so Python can do "import ctypes" FDLLHandle := THandle(dlopen(PAnsiChar(AnsiString(GetDllPath+DllName)), From fdf70a6dec28f6098dde5e6dfa30811942d106ea Mon Sep 17 00:00:00 2001 From: Frank <34280291+geheimniswelten@users.noreply.github.com> Date: Fri, 20 Oct 2023 10:28:52 +0200 Subject: [PATCH 09/10] Speicherlecks --- Source/PythonEngine.pas | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Source/PythonEngine.pas b/Source/PythonEngine.pas index 9cc35700..06ead906 100644 --- a/Source/PythonEngine.pas +++ b/Source/PythonEngine.pas @@ -4313,10 +4313,14 @@ procedure TPythonEngine.Finalize; begin RedirectIO := False; // restore the initial streams also. - ExecString('import sys'+LF+ - 'if hasattr(sys, "old_stdin"): sys.stdin=sys.old_stdin'+LF+ - 'if hasattr(sys, "old_stdout"): sys.stdout=sys.old_stdout'+LF+ - 'if hasattr(sys, "old_stderr"): sys.stderr=sys.old_stderr' ); + try + ExecString('import sys'+LF+ + 'if hasattr(sys, "old_stdin"): sys.stdin=sys.old_stdin'+LF+ + 'if hasattr(sys, "old_stdout"): sys.stdout=sys.old_stdout'+LF+ + 'if hasattr(sys, "old_stderr"): sys.stderr=sys.old_stderr' ); + except + // Exception if a script error occurred previously. e.g. in CheckExecSyntax with incorrect syntax. + end; end; // First finalize our clients if Initialized then From d8455f5c0d62040c700009d69b41ffb76857e620 Mon Sep 17 00:00:00 2001 From: Rocco Kreutz Date: Tue, 5 Dec 2023 14:05:15 +0100 Subject: [PATCH 10/10] .gitignore (*.used) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index f02bd716..00d80cf5 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ *.compiled *.lib *.pyd +*.used # Generated source # ###################