Skip to content

Commit e7fc545

Browse files
committed
Merging from pyscripter repository
2 parents 11412da + 4464ab6 commit e7fc545

File tree

9 files changed

+75
-350
lines changed

9 files changed

+75
-350
lines changed

Demos/Demo16/Example2/Unit1.pas

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ function TForm1.GetProperty(pSelf, Args : PPyObject) : PPyObject; cdecl;
8888
Result := VariantAsPyObject(rgSex.ItemIndex)
8989
else
9090
begin
91-
PyErr_SetString (PyExc_AttributeError^, PAnsiChar(Format('Unknown property "%s"', [key])));
91+
PyErr_SetString (PyExc_AttributeError^, PAnsiChar(UTF8Encode(Format('Unknown property "%s"', [key]))));
9292
Result := nil;
9393
end;
9494
end
@@ -136,7 +136,7 @@ function TForm1.SetProperty(pSelf, Args : PPyObject) : PPyObject; cdecl;
136136
end
137137
else
138138
begin
139-
PyErr_SetString (PyExc_AttributeError^, PAnsiChar(Format('Unknown property "%s"', [key])));
139+
PyErr_SetString (PyExc_AttributeError^, PAnsiChar(UTF8Encode(Format('Unknown property "%s"', [key]))));
140140
Result := nil;
141141
end;
142142
end

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<a href="https://github.com/Embarcadero/python4delphi/"><img src="https://user-images.githubusercontent.com/821930/172723278-ba94a9de-80b2-4eff-9c6b-85e29ee43fde.png" alt="Python4Delphi Logo" align="right"></a>
1+
<img src="https://github.com/pyscripter/python4delphi/wiki/Images/Python4Delphi.svg" alt="drawing" width="25%" align="right"/>
22

33
[Python](https://www.python.org) for [Delphi](https://www.embarcadero.com/products/delphi) (P4D) is a set of free components that wrap up the Python DLL into Delphi and Lazarus (FPC). They let you easily execute Python scripts, create new Python modules and new Python types. You can create Python extensions as DLLs and much more. P4D provides different levels of functionality:
44

Source/Definition.Inc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,9 @@
205205
{$IFDEF FPC}
206206
{$MODE DELPHI}
207207
{$IFDEF CPU64}
208-
{$DEFINE CPUX64}
208+
{$DEFINE CPU64BITS}
209209
{$ENDIF CPU64}
210-
{$IFDEF CPU32}
210+
{$IFDEF CPU386}
211211
{$DEFINE CPUX86}
212212
{$ENDIF CPU32}
213213
{$IFDEF DARWIN}

Source/PythonEngine.pas

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@
6262
{ TODO -oMMM : implement Attribute descriptor and subclassing stuff }
6363

6464
{$IFNDEF FPC}
65-
{$IFNDEF DELPHI2010_OR_HIGHER}
66-
Error! Delphi 2010 or higher is required!
65+
{$IFNDEF DELPHIXE2_OR_HIGHER}
66+
Error! Delphi XE2 or higher is required!
6767
{$ENDIF}
6868
{$ENDIF}
6969

@@ -116,7 +116,7 @@ TPythonVersionProp = record
116116
end;
117117
const
118118
{$IFDEF MSWINDOWS}
119-
PYTHON_KNOWN_VERSIONS: array[1..8] of TPythonVersionProp =
119+
PYTHON_KNOWN_VERSIONS: array[1..9] of TPythonVersionProp =
120120
(
121121
(DllName: 'python33.dll'; RegVersion: '3.3'; APIVersion: 1013),
122122
(DllName: 'python34.dll'; RegVersion: '3.4'; APIVersion: 1013),
@@ -125,11 +125,12 @@ TPythonVersionProp = record
125125
(DllName: 'python37.dll'; RegVersion: '3.7'; APIVersion: 1013),
126126
(DllName: 'python38.dll'; RegVersion: '3.8'; APIVersion: 1013),
127127
(DllName: 'python39.dll'; RegVersion: '3.9'; APIVersion: 1013),
128-
(DllName: 'python310.dll'; RegVersion: '3.10'; APIVersion: 1013)
128+
(DllName: 'python310.dll'; RegVersion: '3.10'; APIVersion: 1013),
129+
(DllName: 'python311.dll'; RegVersion: '3.11'; APIVersion: 1013)
129130
);
130131
{$ENDIF}
131132
{$IFDEF _so_files}
132-
PYTHON_KNOWN_VERSIONS: array[1..8] of TPythonVersionProp =
133+
PYTHON_KNOWN_VERSIONS: array[1..9] of TPythonVersionProp =
133134
(
134135
(DllName: 'libpython3.3m.so'; RegVersion: '3.3'; APIVersion: 1013),
135136
(DllName: 'libpython3.4m.so'; RegVersion: '3.4'; APIVersion: 1013),
@@ -138,11 +139,12 @@ TPythonVersionProp = record
138139
(DllName: 'libpython3.7m.so'; RegVersion: '3.7'; APIVersion: 1013),
139140
(DllName: 'libpython3.8.so'; RegVersion: '3.8'; APIVersion: 1013),
140141
(DllName: 'libpython3.9.so'; RegVersion: '3.9'; APIVersion: 1013),
141-
(DllName: 'libpython3.10.so'; RegVersion: '3.10'; APIVersion: 1013)
142+
(DllName: 'libpython3.10.so'; RegVersion: '3.10'; APIVersion: 1013),
143+
(DllName: 'libpython3.11.so'; RegVersion: '3.11'; APIVersion: 1013)
142144
);
143145
{$ENDIF}
144146
{$IFDEF DARWIN}
145-
PYTHON_KNOWN_VERSIONS: array[1..8] of TPythonVersionProp =
147+
PYTHON_KNOWN_VERSIONS: array[1..9] of TPythonVersionProp =
146148
(
147149
(DllName: 'libpython3.3.dylib'; RegVersion: '3.3'; APIVersion: 1013),
148150
(DllName: 'libpython3.4.dylib'; RegVersion: '3.4'; APIVersion: 1013),
@@ -151,15 +153,17 @@ TPythonVersionProp = record
151153
(DllName: 'libpython3.7.dylib'; RegVersion: '3.7'; APIVersion: 1013),
152154
(DllName: 'libpython3.8.dylib'; RegVersion: '3.8'; APIVersion: 1013),
153155
(DllName: 'libpython3.9.dylib'; RegVersion: '3.9'; APIVersion: 1013),
154-
(DllName: 'libpython3.10.dylib'; RegVersion: '3.10'; APIVersion: 1013)
156+
(DllName: 'libpython3.10.dylib'; RegVersion: '3.10'; APIVersion: 1013),
157+
(DllName: 'libpython3.11.dylib'; RegVersion: '3.11'; APIVersion: 1013)
155158
);
156159
{$ENDIF}
157160
{$IFDEF ANDROID}
158-
PYTHON_KNOWN_VERSIONS: array[6..8] of TPythonVersionProp =
161+
PYTHON_KNOWN_VERSIONS: array[6..9] of TPythonVersionProp =
159162
(
160163
(DllName: 'libpython3.8.so'; RegVersion: '3.8'; APIVersion: 1013),
161164
(DllName: 'libpython3.9.so'; RegVersion: '3.9'; APIVersion: 1013),
162-
(DllName: 'libpython3.10.so'; RegVersion: '3.10'; APIVersion: 1013)
165+
(DllName: 'libpython3.10.so'; RegVersion: '3.10'; APIVersion: 1013),
166+
(DllName: 'libpython3.11.so'; RegVersion: '3.11'; APIVersion: 1013)
163167
);
164168
{$ENDIF}
165169

@@ -1537,7 +1541,7 @@ TPythonInterface=class(TDynamicDll)
15371541
PyObject_Call:function (ob, args, kw:PPyObject):PPyObject; cdecl;
15381542
PyObject_GenericGetAttr:function (obj, name : PPyObject) : PPyObject; cdecl;
15391543
PyObject_GenericSetAttr:function (obj, name, value : PPyObject) : Integer; cdecl;
1540-
PyObject_GC_Malloc:function (size:NativeUInt):PPyObject; cdecl;
1544+
PyObject_Malloc:function (size:NativeUInt):PPyObject; cdecl;
15411545
PyObject_GC_New:function (t:PPyTypeObject):PPyObject; cdecl;
15421546
PyObject_GC_NewVar:function (t:PPyTypeObject; size:NativeInt):PPyObject; cdecl;
15431547
PyObject_GC_Resize:function (t:PPyObject; newsize:NativeInt):PPyObject; cdecl;
@@ -2786,7 +2790,11 @@ implementation
27862790
{$ENDIF}
27872791
{$IFDEF MSWINDOWS}
27882792
Registry,
2793+
{$IFDEF FPC}
2794+
JwaPsApi,
2795+
{$ELSE}
27892796
PsAPI,
2797+
{$ENDIF}
27902798
{$ENDIF}
27912799
Math;
27922800

@@ -3723,7 +3731,7 @@ procedure TPythonInterface.MapDll;
37233731
PyObject_Call := Import('PyObject_Call');
37243732
PyObject_GenericGetAttr := Import('PyObject_GenericGetAttr');
37253733
PyObject_GenericSetAttr := Import('PyObject_GenericSetAttr');
3726-
PyObject_GC_Malloc := Import('_PyObject_GC_Malloc');
3734+
PyObject_Malloc := Import('PyObject_Malloc');
37273735
PyObject_GC_New := Import('_PyObject_GC_New');
37283736
PyObject_GC_NewVar := Import('_PyObject_GC_NewVar');
37293737
PyObject_GC_Resize := Import('_PyObject_GC_Resize');

Source/PythonVersions.pas

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,7 @@ function TPythonVersion.GetDLLName: string;
104104
function TPythonVersion.ExpectedArchitecture: string;
105105
begin
106106
Result := '';
107-
{$IFDEF CPUX64}
108-
Result := '64bit';
109-
{$ENDIF}
110-
{$IFDEF CPU64}
111-
Result := '64bit';
112-
{$ENDIF}
113-
{$IFDEF CPU64bits}
107+
{$IF Defined(CPUX64) or Defined(CPU64) or Defined(CPU64bits)}
114108
Result := '64bit';
115109
{$ENDIF}
116110
if Result = '' then

0 commit comments

Comments
 (0)