[fpc-pascal] Static local variables available?

Bo Berglund bo.berglund at gmail.com
Thu Jul 20 11:03:10 CEST 2017

I am trying to clean up an existing application where handling of
incoming serial data is done inside an event function OnRxData() of
the serial component.
I want to move the processing into a regular procedure so I can later
add a different hardware channel (TCP/IP) as a user choice.

Now when looking at the existing code in the RxData() procedure I see
that there is a while loop retrieving one character at a time from the
serial port and processing it. In the processing these characters are
stuffed into a temp string buffer until the complete packet is ready.

If I divide the single procedure into two where the event procedure
would have the while loop extracting the character and then call a
handling procedure with the char as argument then the processor cannot
have the while, but it must have the buffer...

The only way I could imagine this to work is if:
1) I use a globally defined string variable as buffer
2) It is somehow possible to define the buffer as a static local var.

So since I don't really want to use a global, is it possible to
declare a local variable static in the sense that it retains its
values across calls to the procedure?
If so how is it done?

Bo Berglund
Developer in Sweden

More information about the fpc-pascal mailing list