@@ -2269,7 +2269,7 @@ TPythonEngine = class(TPythonInterface)
22692269 procedure SetProgramName (const ProgramName: string);
22702270 function IsType (ob: PPyObject; obt: PPyTypeObject): Boolean;
22712271 function GetAttrString (obj: PPyObject; AName: PAnsiChar):PAnsiChar;
2272- function CleanString (const s : AnsiString) : AnsiString;
2272+ function CleanString (const s : AnsiString; AppendLF : Boolean = True ) : AnsiString;
22732273 function Run_CommandAsString (const command : AnsiString; mode : Integer) : String;
22742274 function Run_CommandAsObject (const command : AnsiString; mode : Integer) : PPyObject;
22752275 function Run_CommandAsObjectWithDict (const command : AnsiString; mode : Integer; locals, globals : PPyObject) : PPyObject;
@@ -5224,7 +5224,7 @@ function TPythonEngine.GetAttrString(obj: PPyObject; AName: PAnsiChar):PAnsiChar
52245224 PyErr_Clear;
52255225end ;
52265226
5227- function TPythonEngine.CleanString (const s : AnsiString) : AnsiString;
5227+ function TPythonEngine.CleanString (const s : AnsiString; AppendLF : Boolean ) : AnsiString;
52285228var
52295229 i : Integer;
52305230begin
@@ -5235,9 +5235,9 @@ function TPythonEngine.CleanString(const s : AnsiString) : AnsiString;
52355235 while i > 0 do
52365236 begin
52375237 Delete( result, i, 1 );
5238- i := Pos(AnsiString(CR),result);
5238+ i := Pos(AnsiString(CR),result, i );
52395239 end ;
5240- if result[length(result)] <> LF then
5240+ if AppendLF and ( result[length(result)] <> LF) then
52415241 Insert( LF, result, length(result)+1 );
52425242end ;
52435243
@@ -6801,7 +6801,8 @@ function TEventDef.GetDisplayName: string;
68016801function TEventDef.GetDocString : AnsiString;
68026802begin
68036803 Owner.Container.CheckEngine;
6804- FTmpDocString := Owner.Container.Engine.CleanString(AnsiString(FDocString.Text));
6804+ FTmpDocString :=
6805+ Owner.Container.Engine.CleanString(AnsiString(FDocString.Text), False);
68056806 Result := fTmpDocString;
68066807end ;
68076808
@@ -7576,7 +7577,9 @@ procedure TPythonModule.DefineDocString;
75767577 begin
75777578 if DocString.Text <> ' ' then
75787579 begin
7579- doc := PyString_FromString( PAnsiChar(CleanString(AnsiString(FDocString.Text))) );
7580+ doc :=
7581+ PyString_FromString(PAnsiChar(CleanString(EncodeString(FDocString.Text),
7582+ False)) );
75807583 PyObject_SetAttrString( FModule, ' __doc__' , doc );
75817584 Py_XDecRef(doc);
75827585 CheckError(False);
@@ -8823,8 +8826,9 @@ procedure TPythonType.InitServices;
88238826 begin
88248827 // Basic services
88258828 if FDocString.Count > 0 then
8829+ With Engine do
88268830 begin
8827- FCurrentDocString := GetPythonEngine. CleanString(AnsiString (FDocString.Text));
8831+ FCurrentDocString := CleanString(EncodeString (FDocString.Text), False );
88288832 tp_doc := PAnsiChar(FCurrentDocString);
88298833 end ;
88308834 tp_dealloc := @PyObjectDestructor;
0 commit comments