Skip to content

Latest commit

 

History

History
68 lines (44 loc) · 3.27 KB

TPJUnicodeBMPPipeFilter-OnLineEnd.md

File metadata and controls

68 lines (44 loc) · 3.27 KB

OnLineEnd event

Project: I/O Utility Classes

Unit: PJPipeFilters

Class: TPJUnicodeBMPPipeFilter

Applies to: ~>1.0

property OnLineEnd: TPJUnicodeTextReadEvent;

Description

This event is triggered whenever the end of a line is encountered in the Unicode text read from the associated pipe. Line ends are determined by the value of the EOLMarker property.

The event can also be triggered when the Flush method is called or when the object is destroyed. This occurs if there is some text remaining that has not been terminated by an end of line marker.

The event handler is passed the following parameters:

  • Sender - Set to the TPJUnicodeBMPPipeFilter object that triggered the event.

  • Text - An UnicodeString containing the line of text, stripped of the end of line marker.

Remarks

Note that the UnicodeString type must be defined to use this event. This is a native type on Delphi 2009 or later. For Delphi 2007 and earlier the PJPipeFilters unit defines UnicodeString as WideString.

Example

In this example all text strings are Unicode.

Suppose we have a TPJUnicodeBMPPipeFilter object created on a pipe that contains the following Unicode text:

Lorem ipsum<EOL>intellegam<EOL>dissentias<EOL>te sea

The EOLMarker property is set to <EOL>. We perform three pipe reads and a flush operation before destroying the object. Here's what happens:

  • The ReadPipe method is called and reads text [1] Lorem ip from the pipe.
    • OnLineEnd is not triggered because the text contains no end of line marker (<EOL>).
    • The text is recorded for later use in a "carry forward" buffer.
  • ReadPipe is called and reads sum<EOL>intellegam<EOL>dis from the pipe.
    • The text is appended to the carried forward text to get Lorem ipsum<EOL>intellegam<EOL>dis, which is then processed.
    • OnLineEnd is triggered with parameter Lorem ipsum. The following <EOL> is discarded.
    • OnLineEnd is triggered again with parameter intellegam. The following <EOL> is again discarded.
    • The text dis is left over and recorded in the carry forward buffer.
  • ReadPipe is called and reads sentias<EOL>te sea from the pipe.
    • The text is appended to the carried forward text to get dissentias<EOL>te sea, which is processed.
    • OnLineEnd is triggered with parameter dissentias and the following <EOL> is discarded.
    • The remaining text te sea is recorded in the carry forward buffer.
  • The Flush method is called.
    • OnLineEnd is triggered with carried forward text te sea as its parameter.
    • The carry forward buffer is cleared.
  • The object is destroyed, which automatically calls Flush once more.
    • Nothing happens because the carry forward buffer is empty.

Footnotes

Footnote 1

Of course ReadPipe actually reads binary data from the pipe and converts that data into a Unicode text string.

See Also