Slow performance for text manipulation of an InStream

andrewtandrewt Member Posts: 73
Hi all,

I am trying to use a data stream received as an InStream. The content is text and I need to modify some elements at the beginning and the end of the stream in order to be able to further process the data.
What I've done is converting the InStream into a text variable, do the modifications I need and convert it back into an InStream through a TempBLOB for further processing.

This works fine as long as the initial InStream has only a small amount of data, but performance slows down significantly when the amount of data increases.
The issue is the conversion of the InStream into a text variable which has been implemented as follows:
WHILE NOT (InStream.EOS) DO BEGIN
    InStream.READTEXT(HelperText);
    TextTotal += HelperText;
END;

...where HelperText and TextTotal are variables of type Text without a defined length.

This code snippet has been taken from msdn https://msdn.microsoft.com/en-us/library/dd355187(v=nav.90).aspx but it seems like it's not the best way to do it.

So the question is if there's a different way to either accelerate the text conversion of the InStream or manipulate the InStream itself directly ?

As always, any help is highly appreciated.

Many thanks
Andrew

Answers

  • Slawek_GuzekSlawek_Guzek Member Posts: 1,690
    Maybe try to specify length in READTEXT call, to read big chunks of text, rather reading it char by char:
    HelperText : Text[1000];
    
    InStream.READTEXT(HelperText, MAXSTRLEN(HelperText));
    TextTotal += HelperText;
    
    Slawek Guzek
    Dynamics NAV, MS SQL Server, Wherescape RED;
    PRINCE2 Practitioner - License GR657010572SG
    GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-03
Sign In or Register to comment.