[fpc-devel] Output flush on pipes

Mattias Gaertner nc-gaertnma at netcologne.de
Sun May 14 11:53:23 CEST 2006


On Sun, 14 May 2006 11:46:33 +0200
Florian Klaempfl <florian at freepascal.org> wrote:

> Michael Van Canneyt wrote:
> > 
> > On Sun, 14 May 2006, Daniël Mantione wrote:
> > 
> >>
> >> Op Sun, 14 May 2006, schreef Michael Van Canneyt:
> >>
> >>>
> >>> On Sun, 14 May 2006, Daniël Mantione wrote:
> >>>
> >>>>
> >>>> Op Sun, 14 May 2006, schreef Martin Schreiber:
> >>>>
> >>>>> Since some time FPC doesn't  flush output on pipes after writeln.
> >>>>> On linux I can use a pseudo terminal, what can I do on win32 to get
> >flushed  >>>> output from FPC into the message window of MSEide?
> >>>> It is strongly recommended against to parse the compiler output, as
> >it is  >>> designed for humans, not computers. The formatting of the
> >compiler output  >>> can therefore change in time and can also be
> >configured by the user in any  >>> language. Some people are doing it
> >anyway, like Lazarus. >>>
> >>>> The compiler has an interface designed for computers and that is
> >through  >>> the compiler and comphook units. This allows you to retrieve
> >the messages  >>> neatly. If you want process separation, please write a
> >wrapper that puts  >>> the messages in a computer friendly way, and we'll
> >include it in FPC. >> We could do this ourselves by assigning a unique
> >number to each error. >> (and keeping these numbers)
> >> I think a command line output for computers needs to be a bit more 
> >> advanced, take for example this error message:
> >>
> >> testc.pas(11,1) Fatal: Syntax error, "BEGIN" expected but "identifier
> >Z" found >
> >> We have:
> >> * The source file
> >> * The error location
> >> * The error severity
> >> * The error message, containing two parameters.
> >>
> >> Both the severity and error message are currently unpredictable, i.e.
> >they  > can be translated for example. Some IDE's may want to have access
> >to the  > error messages their parameters as well.
> >>
> >> A command line output for computers also needs to be extendable, if we 
> >> want to output more information, this should not break existing 
> >> applications.
> >>
> >> For example, a good way to output this error message in a computer
> >> friendly format would be:
> >>
> >> error:(file='testc.pas';line=11;column=1;message_code='02003_F';
> >>        message='Syntax error, $1 expected but $2 found';
> >>        parameters=('BEGIN','IDENTIFIER Z'));
> > 
> > I'm all for such a message form; it should be easy to add with some -v
> > switch... But  
> > - This is no use if the message code changes over time,
> >   because that is still the unique identifier for the error...
> > - The message itself should not be given, IMHO. 
> >   The program can look it up in the error message file...
> 
> Parsing the current error messages isn't that hard?

For the quick fix items (like eclipse and lazarus), we need the message ID
and parameters, independent of current localization. 


Mattias



More information about the fpc-devel mailing list