Skip to content

Commit d4ae7ac

Browse files
committed
1 parent 82c5564 commit d4ae7ac

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

PythonForDelphi/Components/Sources/Core/PythonEngine.pas

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,13 @@ TPythonVersionProp = record
118118
PYTHON_KNOWN_VERSIONS: array[1..8] of TPythonVersionProp =
119119
(
120120
(DllName: 'libpython2.7.so'; RegVersion: '2.7'; APIVersion: 1013),
121-
(DllName: 'libpython3.2.so'; RegVersion: '3.2'; APIVersion: 1013),
122-
(DllName: 'libpython3.3.so'; RegVersion: '3.3'; APIVersion: 1013),
123-
(DllName: 'libpython3.4.so'; RegVersion: '3.4'; APIVersion: 1013),
124-
(DllName: 'libpython3.5.so'; RegVersion: '3.5'; APIVersion: 1013),
125-
(DllName: 'libpython3.6.so'; RegVersion: '3.6'; APIVersion: 1013),
126-
(DllName: 'libpython3.7.so'; RegVersion: '3.7'; APIVersion: 1013),
127-
(DllName: 'libpython3.8.so'; RegVersion: '3.8'; APIVersion: 1013)
121+
(DllName: 'libpython3.2m.so'; RegVersion: '3.2'; APIVersion: 1013),
122+
(DllName: 'libpython3.3m.so'; RegVersion: '3.3'; APIVersion: 1013),
123+
(DllName: 'libpython3.4m.so'; RegVersion: '3.4'; APIVersion: 1013),
124+
(DllName: 'libpython3.5m.so'; RegVersion: '3.5'; APIVersion: 1013),
125+
(DllName: 'libpython3.6m.so'; RegVersion: '3.6'; APIVersion: 1013),
126+
(DllName: 'libpython3.7m.so'; RegVersion: '3.7'; APIVersion: 1013),
127+
(DllName: 'libpython3.8m.so'; RegVersion: '3.8'; APIVersion: 1013)
128128
);
129129
{$ENDIF}
130130
{$IFDEF DARWIN}
@@ -382,7 +382,7 @@ TPythonVersionProp = record
382382
//#######################################################
383383

384384
type
385-
TPAnsiChar = array[0..16000] of PAnsiChar;
385+
TPAnsiChar = array[0..16000] of PAnsiChar;
386386
TPWideChar = array[0..16000] of PWideChar;
387387
PPAnsiChar = ^TPAnsiChar;
388388
PPWideChar = ^TPWideChar;
@@ -5022,9 +5022,13 @@ procedure TPythonEngine.SetProgramArgs;
50225022
argv : PPAnsiChar;
50235023
i, argc : Integer;
50245024
L : array of AnsiString;
5025-
wbuff : PWideChar;
50265025
wargv : PPWideChar;
5026+
wbuff : PWideChar;
5027+
{$IFDEF LINUX}
5028+
UCS4L : array of UCS4String;
5029+
{$ELSE}
50275030
WL : array of UnicodeString;
5031+
{$ENDIF}
50285032
begin
50295033
// we build a string list of the arguments, because ParamStr returns a volatile string
50305034
// and we want to build an array of PAnsiChar, pointing to valid strings.
@@ -5046,16 +5050,24 @@ procedure TPythonEngine.SetProgramArgs;
50465050
FreeMem( buff );
50475051
end;
50485052
end else begin
5049-
SetLength(WL, argc+1);
5050-
GetMem( wbuff, sizeof(PWideChar)*(argc+1) );
5053+
GetMem(wbuff, sizeof(PWideChar)*(argc+1));
50515054
try
50525055
wargv := PPWideChar(wbuff);
5053-
// get the strings
5054-
// build the PAnsiChar array
5056+
// build the PWideChar array
5057+
{$IFDEF LINUX}
5058+
// Note that Linux uses UCS4 strings, whereas it declares using UCS2 strings!!!
5059+
SetLength(UCS4L, argc+1);
5060+
for i := 0 to argc do begin
5061+
UCS4L[i] := WideStringToUCS4String(ParamStr(i));
5062+
wargv^[i] := @UCS4L[i][0];
5063+
end;
5064+
{$ELSE}
5065+
SetLength(WL, argc+1);
50555066
for i := 0 to argc do begin
50565067
WL[i] := UnicodeString(ParamStr(i));
50575068
wargv^[i] := PWideChar(WL[i]);
50585069
end;
5070+
{$ENDIF}
50595071
// set the argv list of the sys module with the application arguments
50605072
PySys_SetArgv3000( argc + 1, wargv );
50615073
finally

0 commit comments

Comments
 (0)