Código Delphi
[-]
for I := 1 to query2.fields.Count - 1 do
Begin
table2.FieldByName('noreg').AsInteger:=I;
table2.Fields[i].Value := query2.Fields[i].Value;
table2.post;
query2.Next;
end
Si te fijas, ya estas recorriendo los registros uno a uno, el I guarda el número de registro por así decirlo.