[fpc-pascal] Ping problems - OS/X

waldo kitty wkitty42 at windstream.net
Wed May 21 18:33:40 CEST 2014


On 5/21/2014 7:00 AM, Peter Brooks wrote:
>    AStringList.LoadFromStream(Aprocess.Output);
>    AStringList.LoadFromStream(AProcess.Stderr);
>    AStringList.LoadFromStream(AProcess.Output);

[quote]
LoadFromStream loads the contents of Stream into the stringlist. Each line in 
the stream (as marked by the end-of-line marker of the particular OS the 
application runs on) becomes one string in the stringlist. This action replaces 
the contents of the stringlist, it does not append the strings to the current 
content.
[/quote]

those LoadFromStream calls are overwriting the contents of your stringlist... 
note the last sentence in the above quote from 
http://www.freepascal.org/docs-html/rtl/classes/tstrings.loadfromstream.html

you need to figure out how to run through your streams and AStringList.Add() the 
entries to your stringlist

*OR*

you need to have another set of stringlists for those process outputs and then 
use AStringList.AddStrings()

*OR*

you need to AStringList.Assign() another string list, print/save it,
AStringList.Assign() the next string list, print/save it and so on... as 
LoadFromStream, Assign replaces the current contents of AStringList with the new 
contents...


FWIW: if you are using the "improved example" on 
http://wiki.freepascal.org/Executing_External_Programs then you should note that 
it does state that it is flawed and that you should use the code in the next 
example "reading large output" which waits till the end and then loads the 
stream into the stringlist and then you can manipulate it from there...

-- 
  NOTE: No off-list assistance is given without prior approval.
        Please *keep mailing list traffic on the list* unless
        private contact is specifically requested and granted.



More information about the fpc-pascal mailing list