@@ -2247,6 +2247,7 @@ TPythonEngine = class(TPythonInterface)
22472247 procedure Lock ;
22482248 procedure Unlock ;
22492249 procedure SetPythonHome (const PythonHome: string);
2250+ procedure SetProgramName (const ProgramName: string);
22502251 function IsType (ob: PPyObject; obt: PPyTypeObject): Boolean;
22512252 function GetAttrString (obj: PPyObject; AName: PAnsiChar):PAnsiChar;
22522253 function CleanString (const s : AnsiString) : AnsiString;
@@ -4859,18 +4860,20 @@ procedure TPythonEngine.Initialize;
48594860 if IsPython3000 then begin
48604861 if Assigned(Py_SetProgramName3000) then
48614862 begin
4862- FProgramNameW := ParamStr(0 );
4863+ if FProgramNameW = ' ' then
4864+ FProgramNameW := ParamStr(0 );
48634865 Py_SetProgramName3000(PWideChar(FProgramNameW));
48644866 end
48654867 end else begin
48664868 if Assigned(Py_SetProgramName) then
48674869 begin
4868- FProgramName := AnsiString(ParamStr(0 ));
4870+ if FProgramName = ' ' then
4871+ FProgramName := AnsiString(ParamStr(0 ));
48694872 Py_SetProgramName(PAnsiChar(FProgramName));
48704873 end
48714874 end ;
48724875 AssignPyFlags;
4873- if FPythonHomeW<> ' ' then begin
4876+ if FPythonHomeW <> ' ' then begin
48744877 if IsPython3000 then
48754878 Py_SetPythonHome3000(PChar(FPythonHomeW))
48764879 else
@@ -5139,6 +5142,12 @@ procedure TPythonEngine.SetPythonHome(const PythonHome: string);
51395142 FPythonHome := EncodeString(PythonHome);
51405143end ;
51415144
5145+ procedure TPythonEngine.SetProgramName (const ProgramName: string);
5146+ begin
5147+ FProgramNameW := ProgramName;
5148+ FProgramName := EncodeString(ProgramName);
5149+ end ;
5150+
51425151function TPythonEngine.IsType (ob: PPyObject; obt: PPyTypeObject): Boolean;
51435152begin
51445153 result := ob^.ob_type = obt;
0 commit comments