Замечания и предложения

Мы не поддерживаем больше GraphABC. Он устарел

Не лучшая новость для многих учебных заведений, но понять разработчиков тут можно. В школах учителя ненавидят переписывать сто лет назад составленные ими задания, поэтому вся графика ориентирована на Turbo Pascal / Pascal ABC. В заданиях часто напрямую указано использование этой библиотеки. Да и WinXP еще очень у многих стоит из-за старой аппаратной платформы.

@ibond держите: ResourceCreator.rar

RC.exe принимает 1 аргумент командной строки, имя файла иконки, а в выходной поток выплёвывает массив байт готового ресурса.

В “RC test” я показал как можно использовать RC.exe (и + добавил создание файла test.res, чтоб показать что работает).

Так же там есть “Icon test”, чтоб у “Icon test.exe” была иконка - его нужно откомпилировать после запуска “RC test”.

Ну и + я добавил “GetIcons” которое создаёт залитые разным мусором иконки всех допустимых размеров (готовые иконки уже входят в комплект в архиве).

3 лайка

ага

Классно - компилятор ресурсов на PascalABC.NET!

Если бы)) Я нашёл только эту страницу, но когда я залез в готовый файл ресурсов с иконкой - там ничо не сходится. Совершенно. В итоге я просто взял готовый файл с ресурсом иконкой и заменяю в нём несколько значений (проверил, что меняется если разные иконки подставлять и эти части вырезал).

Чуть позже может ещё разберусь, но для начала с несколькими проектами хочу разобраться, да и без того хватает чем голову забить.

@ibond а когда, кстати, будет это в билде?

На неделе. Создайте issue, чтоб я нe забыл

1 лайк

Можно ли сделать так чтоб форматирование исправляло регистр?

Чтоб

procedure MyProc := exit;

begin
  var MyVar := 0;
  
  mYprOc;
  MYvAr := 0;
end.

превращалось в

procedure MyProc := exit;

begin
  var MyVar := 0;
  
  MyProc;
  MyVar := 0;
end.

Регистр в языке Паскаль незначим. Насильно исправлять его - нарушать принятые в языке соглашения.

Это странное предложение.

Технически у нас это невыполнимо. т.к. форматирование проходит на синтаксическом уровне, а для анализа имен нужна семантика

Даже если бы проходило: на каком основании исправлять имена? Может быть, человек нарочно решил использовать верблюжью нотацию, правила языка это позволяют.

Посмотрите внимательно на пример. Говорится не про исправление типа нотации, а про то - что если переменная объявлена каким то образом - везде где она использует тоже так же делало.

То есть чтоб так же это:

procedure mYprOc:= exit;

begin
  var MYvAr := 0;
  
  MyProc;
  MyVar := 0;
end.

превращалось в

procedure mYprOc := exit;

begin
  var MYvAr := 0;
  
  mYprOc;
  MYvAr := 0;
end.

То есть чтоб ориентировалось на описание, то как решил пользователь. Но при этом, к примеру, есть writeln. Вот его имеет смысл исправлять на Writeln при форматировании. Потому что разработчики решили что так правильно, и так делает Ctrl+Space.

Я не совсем понял ваше объяснение, но если вызвать переименование - оно меняет регистр. То есть технически - таки возможно (переименование как то но работает ведь). Вопрос только в том - как на практике реализовать не_костылём…

Такое есть в VB/VBA. Нервы расшатывает страшно. Работает по текущему представлению. Объявил aR, где-то набрал AR - ткт же по всему тексту переименовалось в AR. Поправил на ar - везде ar стало. Тупо контекстная замена в реальном времени. Лично меня раздражает страшно.

И еще раз: в Паскале регистр НЕЗНАЧИМ. Понимаете это слово? НЕЗНАЧИМ. Следовательно не должно идти речи ни о каких автоматических переименованиях. Пользователь имеет право писать переменные так, как хочет.

Но главное даже не в этом. Сейчас, чего греха таить, Intellisence местами лагает. Вы хотите, чтобы в результате подобных лагов еще и имена переменных летели в тексте программы? Я - нет.

В паскале так же переносы строки не значими но форматирование же их исправляет))

Кроме того,

procedure p1;
begin
  var MyVar := 0;
end;

procedure p2;
begin
  var myvar := 0;
end;

begin end.

Вызываем переименование последней переменной в myVar, получаем:

procedure p1;
begin
  var MyVar := 0;
end;

procedure p2;
begin
  var myVar := 0;
end;

begin end.

То есть меняет не по всему текста, а смотрит на контекст.

Да, и где-то заодно поменяет amYvar. А чтобы этого не было, как написал @Admin, надо семантику смотреть, чего нет. В общем, пустой это разговор.

Не всегда это хорошо, например, при написании имён в стиле:

MyVaRiAbLe

В этом случае автозамена была бы полезна. С другой стороны, если пользователь таким образом объявил идентификатор, то везде имя будет исправляться на этот неправильный стиль, но следует заметить, что для перехода к верному стилю именования идентификатора потребуется лишь одно изменение - в объявлении. Поддерживаю @Sun_Serega в том, что это полезная фича.

Это повод улучшать Intellisence, а не отказываться от предложения @Sun_Serega.

Часть, которую предлагает @Sun_Serega, не относится к Intellisense и может быть реализована как отдельный плагин. Система плагинов PascalABC.NET это позволяет.

Данное предложение не затрагивает основной компилятор, систему Intellisense и вполне может быть реализовано сторонними разработчиками на свой страх и риск. Грамматика языка открыта, и ей можно воспользоваться.

Поэтому моё мнение простое - если это будет сторонняя разработка, оформленная в виде dll-плагина, то мы будем только рады. А то, насколько она нужна, можно будет узнать по количеству её скачиваний.

Главное, чтобы она автоматом не срабатывала при использовании имеющегося форматирования.