@@ -95,88 +95,60 @@ interface
95
95
// #######################################################
96
96
97
97
type
98
- TPythonVersionProp = packed record
98
+ TPythonVersionProp = record
99
99
DllName : string;
100
100
RegVersion : string;
101
101
APIVersion : Integer;
102
- CanUseLatest : Boolean;
103
102
end ;
104
103
const
105
104
{ $IFDEF MSWINDOWS}
106
105
PYTHON_KNOWN_VERSIONS: array [1 ..10 ] of TPythonVersionProp =
107
106
(
108
- (DllName: ' python25.dll' ; RegVersion: ' 2.5' ; APIVersion: 1013 ; CanUseLatest: True ),
109
- (DllName: ' python26.dll' ; RegVersion: ' 2.6' ; APIVersion: 1013 ; CanUseLatest: True ),
110
- (DllName: ' python27.dll' ; RegVersion: ' 2.7' ; APIVersion: 1013 ; CanUseLatest: True ),
111
- (DllName: ' python32.dll' ; RegVersion: ' 3.2' ; APIVersion: 1013 ; CanUseLatest: True ),
112
- (DllName: ' python33.dll' ; RegVersion: ' 3.3' ; APIVersion: 1013 ; CanUseLatest: True ),
113
- (DllName: ' python34.dll' ; RegVersion: ' 3.4' ; APIVersion: 1013 ; CanUseLatest: True ),
114
- (DllName: ' python35.dll' ; RegVersion: ' 3.5' ; APIVersion: 1013 ; CanUseLatest: True ),
115
- (DllName: ' python36.dll' ; RegVersion: ' 3.6' ; APIVersion: 1013 ; CanUseLatest: True ),
116
- (DllName: ' python37.dll' ; RegVersion: ' 3.7' ; APIVersion: 1013 ; CanUseLatest: True ),
117
- (DllName: ' python38.dll' ; RegVersion: ' 3.8' ; APIVersion: 1013 ; CanUseLatest: True )
107
+ (DllName: ' python25.dll' ; RegVersion: ' 2.5' ; APIVersion: 1013 ),
108
+ (DllName: ' python26.dll' ; RegVersion: ' 2.6' ; APIVersion: 1013 ),
109
+ (DllName: ' python27.dll' ; RegVersion: ' 2.7' ; APIVersion: 1013 ),
110
+ (DllName: ' python32.dll' ; RegVersion: ' 3.2' ; APIVersion: 1013 ),
111
+ (DllName: ' python33.dll' ; RegVersion: ' 3.3' ; APIVersion: 1013 ),
112
+ (DllName: ' python34.dll' ; RegVersion: ' 3.4' ; APIVersion: 1013 ),
113
+ (DllName: ' python35.dll' ; RegVersion: ' 3.5' ; APIVersion: 1013 ),
114
+ (DllName: ' python36.dll' ; RegVersion: ' 3.6' ; APIVersion: 1013 ),
115
+ (DllName: ' python37.dll' ; RegVersion: ' 3.7' ; APIVersion: 1013 ),
116
+ (DllName: ' python38.dll' ; RegVersion: ' 3.8' ; APIVersion: 1013 )
118
117
);
119
118
{ $ENDIF}
120
119
{ $IFDEF _so_files}
121
120
PYTHON_KNOWN_VERSIONS: array [1 ..10 ] of TPythonVersionProp =
122
121
(
123
- (DllName: ' libpython2.5.so' ; RegVersion: ' 2.5' ; APIVersion: 1013 ; CanUseLatest: True ),
124
- (DllName: ' libpython2.6.so' ; RegVersion: ' 2.6' ; APIVersion: 1013 ; CanUseLatest: True ),
125
- (DllName: ' libpython2.7.so' ; RegVersion: ' 2.7' ; APIVersion: 1013 ; CanUseLatest: True ),
126
- (DllName: ' libpython3.2.so' ; RegVersion: ' 3.2' ; APIVersion: 1013 ; CanUseLatest: True ),
127
- (DllName: ' libpython3.3.so' ; RegVersion: ' 3.3' ; APIVersion: 1013 ; CanUseLatest: True ),
128
- (DllName: ' libpython3.4.so' ; RegVersion: ' 3.4' ; APIVersion: 1013 ; CanUseLatest: True ),
129
- (DllName: ' libpython3.5.so' ; RegVersion: ' 3.5' ; APIVersion: 1013 ; CanUseLatest: True ),
130
- (DllName: ' libpython3.6.so' ; RegVersion: ' 3.6' ; APIVersion: 1013 ; CanUseLatest: True ),
131
- (DllName: ' libpython3.7.so' ; RegVersion: ' 3.7' ; APIVersion: 1013 ; CanUseLatest: True ),
132
- (DllName: ' libpython3.8.so' ; RegVersion: ' 3.8' ; APIVersion: 1013 ; CanUseLatest: True )
122
+ (DllName: ' libpython2.5.so' ; RegVersion: ' 2.5' ; APIVersion: 1013 ),
123
+ (DllName: ' libpython2.6.so' ; RegVersion: ' 2.6' ; APIVersion: 1013 ),
124
+ (DllName: ' libpython2.7.so' ; RegVersion: ' 2.7' ; APIVersion: 1013 ),
125
+ (DllName: ' libpython3.2.so' ; RegVersion: ' 3.2' ; APIVersion: 1013 ),
126
+ (DllName: ' libpython3.3.so' ; RegVersion: ' 3.3' ; APIVersion: 1013 ),
127
+ (DllName: ' libpython3.4.so' ; RegVersion: ' 3.4' ; APIVersion: 1013 ),
128
+ (DllName: ' libpython3.5.so' ; RegVersion: ' 3.5' ; APIVersion: 1013 ),
129
+ (DllName: ' libpython3.6.so' ; RegVersion: ' 3.6' ; APIVersion: 1013 ),
130
+ (DllName: ' libpython3.7.so' ; RegVersion: ' 3.7' ; APIVersion: 1013 ),
131
+ (DllName: ' libpython3.8.so' ; RegVersion: ' 3.8' ; APIVersion: 1013 )
133
132
);
134
133
{ $ENDIF}
135
134
{ $IFDEF DARWIN}
136
135
PYTHON_KNOWN_VERSIONS: array [1 ..10 ] of TPythonVersionProp =
137
136
(
138
- (DllName: ' libpython2.5.dylib' ; RegVersion: ' 2.5' ; APIVersion: 1013 ; CanUseLatest: True ),
139
- (DllName: ' libpython2.6.dylib' ; RegVersion: ' 2.6' ; APIVersion: 1013 ; CanUseLatest: True ),
140
- (DllName: ' libpython2.7.dylib' ; RegVersion: ' 2.7' ; APIVersion: 1013 ; CanUseLatest: True ),
141
- (DllName: ' libpython3.2.dylib' ; RegVersion: ' 3.2' ; APIVersion: 1013 ; CanUseLatest: True ),
142
- (DllName: ' libpython3.3.dylib' ; RegVersion: ' 3.3' ; APIVersion: 1013 ; CanUseLatest: True ),
143
- (DllName: ' libpython3.4.dylib' ; RegVersion: ' 3.4' ; APIVersion: 1013 ; CanUseLatest: True ),
144
- (DllName: ' libpython3.5.dylib' ; RegVersion: ' 3.5' ; APIVersion: 1013 ; CanUseLatest: True ),
145
- (DllName: ' libpython3.6.dylib' ; RegVersion: ' 3.6' ; APIVersion: 1013 ; CanUseLatest: True ),
146
- (DllName: ' libpython3.7.dylib' ; RegVersion: ' 3.7' ; APIVersion: 1013 ; CanUseLatest: True ),
147
- (DllName: ' libpython3.8.dylib' ; RegVersion: ' 3.8' ; APIVersion: 1013 ; CanUseLatest: True )
137
+ (DllName: ' libpython2.5.dylib' ; RegVersion: ' 2.5' ; APIVersion: 1013 ),
138
+ (DllName: ' libpython2.6.dylib' ; RegVersion: ' 2.6' ; APIVersion: 1013 ),
139
+ (DllName: ' libpython2.7.dylib' ; RegVersion: ' 2.7' ; APIVersion: 1013 ),
140
+ (DllName: ' libpython3.2.dylib' ; RegVersion: ' 3.2' ; APIVersion: 1013 ),
141
+ (DllName: ' libpython3.3.dylib' ; RegVersion: ' 3.3' ; APIVersion: 1013 ),
142
+ (DllName: ' libpython3.4.dylib' ; RegVersion: ' 3.4' ; APIVersion: 1013 ),
143
+ (DllName: ' libpython3.5.dylib' ; RegVersion: ' 3.5' ; APIVersion: 1013 ),
144
+ (DllName: ' libpython3.6.dylib' ; RegVersion: ' 3.6' ; APIVersion: 1013 ),
145
+ (DllName: ' libpython3.7.dylib' ; RegVersion: ' 3.7' ; APIVersion: 1013 ),
146
+ (DllName: ' libpython3.8.dylib' ; RegVersion: ' 3.8' ; APIVersion: 1013 )
148
147
);
149
148
{ $endif}
150
- { $IFDEF PYTHON25}
151
- COMPILED_FOR_PYTHON_VERSION_INDEX = 1 ;
152
- { $ENDIF}
153
- { $IFDEF PYTHON26}
154
- COMPILED_FOR_PYTHON_VERSION_INDEX = 2 ;
155
- { $ENDIF}
156
- { $IFDEF PYTHON27}
157
- COMPILED_FOR_PYTHON_VERSION_INDEX = 3 ;
158
- { $ENDIF}
159
- { $IFDEF PYTHON32}
160
- COMPILED_FOR_PYTHON_VERSION_INDEX = 4 ;
161
- { $ENDIF}
162
- { $IFDEF PYTHON33}
163
- COMPILED_FOR_PYTHON_VERSION_INDEX = 5 ;
164
- { $ENDIF}
165
- { $IFDEF PYTHON34}
166
- COMPILED_FOR_PYTHON_VERSION_INDEX = 6 ;
167
- { $ENDIF}
168
- { $IFDEF PYTHON35}
169
- COMPILED_FOR_PYTHON_VERSION_INDEX = 7 ;
170
- { $ENDIF}
171
- { $IFDEF PYTHON36}
172
- COMPILED_FOR_PYTHON_VERSION_INDEX = 8 ;
173
- { $ENDIF}
174
- { $IFDEF PYTHON37}
175
- COMPILED_FOR_PYTHON_VERSION_INDEX = 9 ;
176
- { $ENDIF}
177
- { $IFDEF PYTHON38}
178
- COMPILED_FOR_PYTHON_VERSION_INDEX = 10 ;
179
- { $ENDIF}
149
+
150
+ COMPILED_FOR_PYTHON_VERSION_INDEX = High(PYTHON_KNOWN_VERSIONS);
151
+
180
152
PYT_METHOD_BUFFER_INCREASE = 10 ;
181
153
PYT_MEMBER_BUFFER_INCREASE = 10 ;
182
154
PYT_GETSET_BUFFER_INCREASE = 10 ;
@@ -4747,7 +4719,7 @@ procedure TPythonEngine.DoOpenDll(const aDllName : string);
4747
4719
i : Integer;
4748
4720
begin
4749
4721
if UseLastKnownVersion then
4750
- for i:= Integer(COMPILED_FOR_PYTHON_VERSION_INDEX) to High(PYTHON_KNOWN_VERSIONS) do
4722
+ for i:= Integer(COMPILED_FOR_PYTHON_VERSION_INDEX) downto 0 do
4751
4723
begin
4752
4724
RegVersion := PYTHON_KNOWN_VERSIONS[i].RegVersion;
4753
4725
FDLLHandle := SafeLoadLibrary(GetDllPath+PYTHON_KNOWN_VERSIONS[i].DllName);
@@ -4757,8 +4729,6 @@ procedure TPythonEngine.DoOpenDll(const aDllName : string);
4757
4729
APIVersion := PYTHON_KNOWN_VERSIONS[i].APIVersion;
4758
4730
Exit;
4759
4731
end ;
4760
- if not PYTHON_KNOWN_VERSIONS[i].CanUseLatest then
4761
- Break;
4762
4732
end
4763
4733
else
4764
4734
RegVersion := GetPythonVersionFromDLLName(aDllName);
0 commit comments