Tuesday, July 16, 2019

When True is not

Pop quiz! How can the following program …

Writeln(True);
Magic;
Writeln(True);

… output this:?

TRUE
FALSE

Simple!

Tuesday, July 02, 2019

The case of a missing begin/end

Delphi never stops surprising me …
Did you know that this is a valid syntax?
case a of
  0: Writeln(0);
  else
    Writeln('else');
    Writeln(a);
end;
This code indeed compiles and works exactly as the following fragment.
case a of
  0: Writeln(0);
  else begin
    Writeln('else');
    Writeln(a);
  end;
end;
I personally would never drop begin/end inside a case/else statement, but at least someone must disagree. I found such example in a very (VERY!) old code (it was written for Delphi 2) and I was quite surprised that it compiles at all.

EDIT

Anton Alisov suggested formatting first example as:
case a of
  0: Writeln(0);
else
  Writeln('else');
  Writeln(a);
end;
I guess this makes more sense (but just an itsy bitsy teenie weenie bit more).