Граждане, помогите с програмкой.

program rulon;
var dsID,hsID,d1sID,stringID,lsID,stringID1:integer;
s,dl,d1l,hl:string;
ds,hs,d1s,ls:string;
i,n,di,hi,d1i:integer;
d,d1,l,h,r:real;
cmdQuit,cmdNext,cmdRun: command;
begin
ShowForm;
dsID:=FormAddTextField('Введите диаметр рулона в мм', '', 4, TF_NUMERIC);
AddCommand(cmdNext);
hsID:=FormAddTextField('Введите толщину материала в мкм', '', 4, TF_NUMERIC);
AddCommand(cmdNext);
d1sID:=FormAddTextField('Введите диаметр держателя в мм', '', 10, TF_NUMERIC);
AddCommand(cmdNext);
cmdNext := CreateCommand('Считать', CM_OK, 1);
AddCommand(cmdNext);
repeat until GetClickedCommand = cmdNext;
ShowCanvas;
di:=StringToInteger(FormGetText(dsID));
d:=di/1000;
hi:=StringToInteger(FormGetText(hsID));
h:=hi/1000000;
d1i:=StringToInteger(FormGetText(d1sID));
d1:=d1i/1000;
n:=trunc((d-d1)/(2*h));
r:=d1+h;
for i:=1 to n do
begin
l:=l+3.14*r;
r:=r+h;
end;
drawText(''+l,0,0);
repaint;
cmdQuit := CreateCommand('Выход', CM_EXIT, 1);
AddCommand(cmdQuit);
repeat until GetClickedCommand = cmdQuit;
end.
Запускается нормально. Вводятся данные в формы, адальше - облом. Появляется белый экран и прога зависает. Подскажите пожалуйста, что нужно исправить.
