codice:
Program giacenza;
type
codprodotto=0001..9999;
Prodotti = RECORD
          merce:string;
          codice:codprodotto;
          prezzo:real;
          Giacenza:integer;
          END;

Var
prodotto:array [1..100] of prodotti;
I:Integer;                      (*contatore*)
txtmagazzino:text;              (*File di testo*)

BEGIN
 Assign  (txtmagazzino,'c:\miei\esercizi\magazzin
o.txt');    
reset (txtmagazzino);
 I:=0;                           (*poniamo I=1*)
while not eof(txtmagazzino) do 
begin
readln(txtmagazzino, prodotto[i].merce);
read(txtmagazzino, prodotto[i].codice);
readln(txtmagazzino, prodotto[i].prezzo);
readln(txtmagazzino, prodotto[i].giacenza);
I:=I+1;                                (*incrementiamo I*)
end;
close(txtmagazzino);
end.
prova così dovrebbe andare, probabilmente è questione del comando readln e read.