Мама моя родная - вот это портянка.
Вы про циклы, массивы процедуры слышали хоть краем уха. Это-же надо было такое породить. И не лень же было все это писать. Я на 20 строчке уже бы задумался, как это дело оптимизировать. Ведь блоки постоянно повторяются. Зачем вы их берете в begin ... end?
И поясните что вы такое делаете этой строчкой?
Код:
if label304.caption >inttostr(0) then label304.Color:=clLime;
Как-то я смутно подозреваю, что имелось ввиду вот такое:
Код:
if StrToInt(label304.caption) > 0 then label304.Color:=clLime;
И наконец, ваша переменная prsk описана как локальная переменная процедуры TForm1.Timer1Timer(Sender: TObject), а вот обращение видимо к ней происходит за пределами этой процедуры. Вы этими бесконечными begin ... end сами себя запутали.
Приведите код в порядок, многое станет очевидно.