E2153 ';' nicht erlaubt vor einem 'ELSE' (Object Pascal)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Object Pascal) - Index

Sie haben ein ";" unmittelbar vor einem else in einer if..else-Anweisung gesetzt. Der Grund für die Fehlermeldung ist, dass ";" als Anweisungs-Trennsymbol anstatt als Anweisungs-Endesymbol behandelt wird – if..else ist eine einzige Anweisung, und ein ";" kann nicht innerhalb dieser Anweisung stehen (gilt nicht für zusammengesetzte Anweisungen).


program Produce;

  var
    b : Integer;

begin
  if b = 10 then
    b := 0;
  else
    b := 10;
end.

In Object Pascal ist es nicht zulässig, ein ";" unmittelbar vor eine else-Anweisung zu setzen. In diesem Quelltext wird daher ein Fehler gemeldet.


program Solve;

  var
    b : Integer;

begin
  if b = 10 then
    b := 0
  else
    b := 10;

  if b = 10 then begin
    b := 0;
  end
  else begin
    b := 10;
  end;

end.

Für dieses Problem gibt es zwei einfache Lösungen. Die erste Lösung ist die Entfernung des betreffenden ";". Die zweite Lösung liegt darin, zusammengesetzte Anweisungen für alle Teile der if..else-Anweisung zu erstellen. Wenn $HINTS aktiviert sind, erhalten Sie einen Hinweis darüber, dass der zu "b" zugewiesene Wert niemals benutzt wird.