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 # ################### pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy