@@ -2247,6 +2247,7 @@ TPythonEngine = class(TPythonInterface)
2247
2247
procedure Lock ;
2248
2248
procedure Unlock ;
2249
2249
procedure SetPythonHome (const PythonHome: string);
2250
+ procedure SetProgramName (const ProgramName: string);
2250
2251
function IsType (ob: PPyObject; obt: PPyTypeObject): Boolean;
2251
2252
function GetAttrString (obj: PPyObject; AName: PAnsiChar):PAnsiChar;
2252
2253
function CleanString (const s : AnsiString) : AnsiString;
@@ -4859,18 +4860,20 @@ procedure TPythonEngine.Initialize;
4859
4860
if IsPython3000 then begin
4860
4861
if Assigned(Py_SetProgramName3000) then
4861
4862
begin
4862
- FProgramNameW := ParamStr(0 );
4863
+ if FProgramNameW = ' ' then
4864
+ FProgramNameW := ParamStr(0 );
4863
4865
Py_SetProgramName3000(PWideChar(FProgramNameW));
4864
4866
end
4865
4867
end else begin
4866
4868
if Assigned(Py_SetProgramName) then
4867
4869
begin
4868
- FProgramName := AnsiString(ParamStr(0 ));
4870
+ if FProgramName = ' ' then
4871
+ FProgramName := AnsiString(ParamStr(0 ));
4869
4872
Py_SetProgramName(PAnsiChar(FProgramName));
4870
4873
end
4871
4874
end ;
4872
4875
AssignPyFlags;
4873
- if FPythonHomeW<> ' ' then begin
4876
+ if FPythonHomeW <> ' ' then begin
4874
4877
if IsPython3000 then
4875
4878
Py_SetPythonHome3000(PChar(FPythonHomeW))
4876
4879
else
@@ -5139,6 +5142,12 @@ procedure TPythonEngine.SetPythonHome(const PythonHome: string);
5139
5142
FPythonHome := EncodeString(PythonHome);
5140
5143
end ;
5141
5144
5145
+ procedure TPythonEngine.SetProgramName (const ProgramName: string);
5146
+ begin
5147
+ FProgramNameW := ProgramName;
5148
+ FProgramName := EncodeString(ProgramName);
5149
+ end ;
5150
+
5142
5151
function TPythonEngine.IsType (ob: PPyObject; obt: PPyTypeObject): Boolean;
5143
5152
begin
5144
5153
result := ob^.ob_type = obt;
0 commit comments