@@ -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__' 
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