Anton Shchyrov created THRIFT-4462:
--------------------------------------

             Summary: Incorrect first line in Console
                 Key: THRIFT-4462
                 URL: https://issues.apache.org/jira/browse/THRIFT-4462
             Project: Thrift
          Issue Type: Bug
          Components: Delphi - Library
    Affects Versions: 0.11.0
            Reporter: Anton Shchyrov
         Attachments: Thrift.Console.patch

Method Console.Write/WriteLine in class TGUIConsole after called method *Write* 
and clear log duplicates current message

{{ChangeConsole(TGUIConsole.Create(Memo1.Lines));}}

{{Console.Write('String');  // Set internal FLineBreak to False}}

{{Memo1.Lines.Clear;}}

{{Console.Write('Some String');  // Log have "Some StringSome String"}}

Reason in method 

{{procedure TGUIConsole.InternalWrite(const S: string; bWriteLine: Boolean);}}
{{var}}
{{  idx : Integer;}}
{{begin}}
{{  if FLineBreak then}}
{{  begin}}
{{    FMemo.Add( S );}}
{{  end else}}
{{  begin}}
{{    idx := FMemo.Count - 1;}}
{{    if idx < 0 then}}
{{    begin}}
{{      FMemo.Add( S );}}
{{    end;}}
{{    FMemo[idx] := FMemo[idx] + S;}}
{{  end;}}
{{  FLineBreak := bWriteLine;}}
{{end;}}

If FMemo.Count = 0 then idx = -1 and string added to log. But next line

{{FMemo[idx] := FMemo[idx] + S;}}

repeats the added string. should be

    if idx < 0 then
    begin
      FMemo.Add( S );
    end *else*
      FMemo[idx] := FMemo[idx] + S;



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to