А если массив не заводить?
uses Crt;
var n: integer;
p: longint;
begin
ClrScr;
p:=1;
repeat
Write(' n =');
ReadLn(n);
if n<>0 then P:=P*n;
until n=0;
WriteLn (' Pro = ',P);
ReadLn;
end.
Опасность: Можно выйти за диапазон возможный значений для longint....