[Gambas-user] Program runs wild

Benoit Minisini gambas at ...1...
Mon Dec 20 12:38:17 CET 2004


On Monday 20 December 2004 12:28, Eilert wrote:
> Hi,
>
> this is a small Gambas app I made for monitoring who is online in the
> system. The program calls "who" and displays the output in a list. There
> is an LCD number showing the number of people logged in. That's all.
>
> There is no regular base on which the program starts going nuts. All I
> can say is "sometimes" it starts consuming more and more processing
> power while still keeping to run. If I stop it and restart it,
> everything is fine again, until next time... :-)
>
> Here is the code:
>
> ' Gambas class file
>
> PUBLIC SUB Form_Open()
>
>    Form1.Title = "KwhoList 1.0"
>    Form1.X = 713
>    Form1.Y = 510
>    Form1.Width = 270
>    Form1.Height = 280
>
>    whoListeLesen
>
> END
>
> PUBLIC SUB Timer1_Timer()
>
>    whoListeLesen
>
> END
>
> PUBLIC SUB Process_Read()
> DIM t$ AS String
>
>    LINE INPUT #LAST, t$
>
>    ListBox1.Add(t$)
>    LCDNumber1.Value = ListBox1.Count
>
> END
>
>
> SUB whoListeLesen()
>
>    ListBox1.Clear
>
>    EXEC [ "who" ] FOR READ
>
>
>
> END
>
> PUBLIC SUB Form_Resize()
>
>    ListBox1.Width = Form1.Width
>    ListBox1.Height = Form1.Height - 50
> END
>
> ---
> When initiated, the program reads the list once to have a display. The
> timer is on 10 seconds. So every 10 seconds I can see a new list.
>
> Any ideas where there is a reason for Gambas to start consuming 88 %
> processing power?
>
> Rolf
>

What happens if you read data from 'who' process this way:

' Gambas class file

PRIVATE $sBuffer AS String

...

PUBLIC SUB Process_Read()

  DIM sData AS String
  DIM iPos AS Integer

  READ #LAST, sData, -255

  $sBuffer = $sBuffer & sData
  
  DO
    iPos = Instr($sBuffer, "\n")
    IF iPos = 0 then BREAK

    ListBox1.Add(Left$($sBuffer, iPos - 1))
    $sBuffer = Mid$($sBuffer, iPos + 1)
  LOOP

  LCDNumber1.Value = ListBox1.Count

END

...


Tell me the result!

Regards,

-- 
Benoit Minisini
mailto:gambas at ...1...




More information about the User mailing list