Read from process
Mike Bonner
bonnmike at gmail.com
Wed Mar 28 21:14:56 EDT 2012
Maybe its time to go with the Bob method?
On Wed, Mar 28, 2012 at 7:13 PM, Mike Bonner <bonnmike at gmail.com> wrote:
> Interesting. Not sure whats up then because "read until empty" should grab
> whatever happens to be in the buffer at the time. Whether its read for 10,
> or whatever all the same data passes through the buffer. Meaning the data
> is the data and the method used to read shouldn't make a difference as far
> as the content so I freely admit to being flummoxed.
>
>
> On Wed, Mar 28, 2012 at 7:01 PM, Glen Bojsza <gbojsza at gmail.com> wrote:
>
>> Hi Mike,
>>
>> Well using your code I get the expected result at the end of the process
>> but the interim output that I try to capture shows nothing?
>>
>> So good news - using your method I get the end result and the user is free
>> to do other things ; / bad news - I can't show the interim output for
>> feedback.
>>
>> If I use the following code I get the opposite effect - user cannot do
>> anything until the process completes but the interim output updates to the
>> field.
>>
>> In both cases the process completes with the final results.
>>
>> So it has to do with the timing of the send and the reading of the process
>> (I also tried reading lines and have the same result as reading characters
>> as shown below)
>>
>> local nM
>> on mouseUp
>> startProcess
>> end mouseUp
>>
>> command startProcess
>> put fld dbPathList into nM
>> open process nM for update
>> set the cRunning of this card to true
>> readloop
>> end startProcess
>>
>> command readloop
>> if the the cRunning of this card then
>> read from process nM for 10
>> if it is not empty then
>> put it & cr after fld mergeOut
>> put the number of lines of fld mergeOut * 16 into sPlace
>> set the vscroll of fld mergeOut to sPlace
>> if it contains "dblink disconnecting" then
>> set the cRunning of this card to false
>> close process nM
>> exit to top
>> end if
>> send "readloop" to me in 1 tick
>> end if
>> end if
>>
>> end readloop
>>
>> On Wed, Mar 28, 2012 at 5:35 PM, Mike Bonner <bonnmike at gmail.com> wrote:
>>
>> > Sorry for posting and falling off the earth. A bit sick today but will
>> try
>> > and give the gist of a send in time loop. This is just off the top of my
>> > head and as always there are probably better ways to do this (also as I
>> > mentioned before, not sure which forms of read will block and which
>> won't
>> > so your mileage may vary depending on need)
>> >
>> > command startProcess
>> > ## code to connect to the process
>> > open process "myprocess" for update
>> > ## check for errors opening the process, if no errors then
>> > set the cRunning of this card to true -- a method to break the loop,
>> set to
>> > false to stop the loop
>> >
>> > readloop -- handler to do the read
>> > end startProcess
>> >
>> > command readloop
>> > if the the cRunning of this card then
>> > read from process "myProcess" until empty
>> > if it is not empty then
>> > #do whatever you want with the resulting read.
>> > #if the end line is read, close process set the cRunning of this card to
>> > false
>> > end if
>> > send "readloop" to me in 1 tick
>> > end if
>> >
>> > end readloop
>> >
>> >
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>
>
More information about the use-livecode
mailing list