tritt die exception vielleicht auf, weil in der ausserhalb des Exceptionblocks stehenden Anweisung

ergebnis := round((fett * 9 * 100) / kcal);

kcal noch auf Null gesetzt ist ? Wenn eine Division durch Null auftritt, dann wird ja der Wert von kcal nicht geaendert ... Probiers mal, die Zeile mit in den Try Block zu schreiben.

Laut Delphi Hilfesystem ist dein Code correkt. Du koenntest natuerlich auch explizit die Division durch Null Exception abfangen, das wuerdest du so machen ...

Code:
try

  X := Y/Z;
except
  on EZeroDivide do 
    begin
      ...
    end;
end;