@@ -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
384384type
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}
50285032begin
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