Версия PascalABC.NET 3.5

Отловить конец условия невозможно - вдруг человек хочет перенести выражение на следующую строку. Но then на следующей строке я бы запретил. Повторюсь еще раз: я делаю автозавершение для начинающих. Опытные программисты могут его отключать и писать, как им хочется. Потом я сделаю сохранение настроек.

Да, я тоже потом начал об этом думать.

Как можно запрещать запись оператора каким-то конкретным образом в языке, где конструкции по определению имеют свободный формат? Можно что-то не любить, не одобрять, высказывать свое “фе” - это понятно. Но запрещать… по-моему, это слишком сильно сказано.

1 лайк

Я не могу этого сделать, поэтому обсуждать нечего ))

1 лайк

Попробуйте скачать новую версию. Там должна быть исправлена ошибка переноса оператора присваивания в центре строки. Отпишитесь по возможности

Да, работает. Спасибо!

В том, что скачалось, по-прежнему нажатие Enter внутри строки не приводит к разбиению строки на две в позиции курсора. А “перенос оператора присваивания в центре строки” - это что имелось в виду?.

по крайней мере начало работать это

var a:=5; <enter> после чего не добавляет лишние ;

Это - да, нормально работает.

А что ненормально?

Я писал выше.

Ясно. Странно. 24го проверю

Вот что не так:

Да, я понял. Уже исправил, но выложить не могу

@Admin а что там с консольными компиляторами? Вы их вроде улучшали…

pabcnetcclear.exe вылетает если запускать без параметров. Вроде там пишет что то про синтаксис параметров, но за те несколько десятков миллисекунд - ничего не разглядеть.
А pabcnetc.exe вылетает если запускать приложением, у которого нет консоли.
Попробовал так же применять параметры командной строки pabcnetc.exe к pabcnetcclear.exe… Ничего хорошего не вышло.

Можете дать обзор того - что сейчас работает? Мне для автоматического тестера OpenCL и OpenGL надо что то чтоб указывать откуда брать .pcu файлы, есть для этого что то стабильно работающее?

А что в вашем понимании “вылетает”? И что значит “запускать консольный компилятор без консоли”?

1 лайк
begin
  
  var psi := new System.Diagnostics.ProcessStartInfo(
    'C:\Program Files (x86)\PascalABC.NET\pabcnetc.exe'
  );
  psi.UseShellExecute := false;
  psi.RedirectStandardInput := true;
  psi.RedirectStandardOutput := true;
  psi.RedirectStandardError := true;
  
  
  
  var p := System.Diagnostics.Process.Start(psi);
  p.WaitForExit;
  p.StandardError.ReadToEnd.Println;
  
end.

Запустите по F9, чтоб консоль не создалась. Так же работает и при {$apptype windows}.

Это не вылетает. Это правильное поведение.

Любое консольное приложение так работать будет. Запускайте в консольном окне чтобы работало

А тут в каком смысле вылетает?

Но pabcnetc.exe то остаётся запущенным. Закрывать само должно только когда запущенно с аргументами командной строки. А когда запущенно из папки, то есть без аргументов - после вывода списка доступных аргументов надо делать паузу, чтоб можно было их разглядеть.

Я привёл код в предыдущем сообщении.

Исправил. Выложил - проверьте.

2 лайка