Как насчёт того чтоб сделать несколько идентификаторов по умолчанию для {$ifdef} и {$ifndef}?
(ну и у меня ещё not и and используются в {$ifdef }, в последнем примере, которые сложно адекватно заменить)
Например:
{$ifndef EnvironmentLaunched}
System.Console.Clear;
{$endif}
чтоб в exe файл записывало эту строчку если программа не была запущена через простое F9.
Возьмём пример из CRT:
function RedirectIOUnitUsed: boolean;
var
  t: &Type;
begin
  t := System.Reflection.Assembly.GetExecutingAssembly.GetType('__RedirectIOMode.__RedirectIOMode');
  Result := t <> nil;
end;
и далее
  if (not RedirectIOUnitUsed) {and IsConsoleApplication} then
//здесь ошибка, IsConsoleApplication у нас никогда не инициализируется
//это комментарий из самого CRT, ещё 1 причина добавлять идентификаторы, IsConsoleApplication
//может меняться с помощью {$apptype }, а на сколько я понимаю директивы компилятору так устроены
//что переменной передать значение заданное директивой очень неудобно
Это if становится частью готовой программы и проверяет при запуске каждый раз, можно сказать что это не значительно, но я отвечу что это просто не красиво…
Так было бы на много лучше:
procedure __InitModule;
begin
  //можно тут и из C++ взять его ! и &&, тогда можно без пробелов написать, а новички всё равно директивы компилятору не будут использовать
  {$ifdef not EnvironmentLaunched and IsConsoleApplication}
  Console.CursorSize := 15;    
  BlankString := ' '*(Console.BufferWidth - 1);
  {$else}
  Console.WriteLine('Программу с подключенным модулем CRT нельзя запускать по F9.');
  Console.WriteLine('Запустите программу, используя Shift-F9');
  Halt;
  {$endif}
end;
Ну и разумеется спектр применения большой, не только делать код более красивым
P.S.
Как недавно было сказано в теме “Помощь новичкам” использовать отладку с CRT нельзя как раз из за этого Halt в инициализации.
Возможно стоит заменить на такое:
  Console.WriteLine('Программу с подключенным модулем CRT нежелательно запускать по F9,');
  Console.WriteLine('такие процедуры как clrscr будут вызывать исключение(ошибку времени выполнения).');
  Console.WriteLine('Нажмите Enter чтобы продолжить или завершите программу и запустите с Shift+F9');
  Readln;
P.P.S.
Не нашёл замены #pragma из C#, а ведь довольно полезная директива