Так - понятно, литеральная константа превратилась в выражение. Но почему компилятор не понимает, что в соответствии с синтаксисом литерал и без скобок есть частный случай строкового выражения?
У меня на Убунту 16.04 не запускался консольный компилятор. Верней, при запуске вылетало исключение.
Unhandled Exception: System.TypeInitializationException: The type
initializer for ‘PascalABCCompiler.SystemLibrary.SystemLibrary’ threw
an exception. —> System.IO.FileNotFoundException: Could not load
file or assembly or one of its dependencies. File name:
‘System.Numerics, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089’ at
PascalABCCompiler.SystemLibrary.SystemLibrary.make_types ()
<0x4057dda0 + 0x0000b> in :0
…
Да, недавно было добавлено представление комплексных чисел в виде (a,b) и компилятор стал использовать System.Numerics. Странно, что он не идет в поставку mono-full
Во-первых, не mono-full, а mono-complete. А во-вторых: у меня он не стоит, чтобы на засорять десятками ненужных пакетов накопитель. Стоит то, что необходимо.
Оказалось, что ещё каких-то сборок не хватало, но не смог понять каких, пришлось поставить mono-complete всё же. У меня просто ноут, ssd небольшой, мне жалко сотню мегабайт под это дело. Ну да ладно…
Здравствуйте. Некорректно работает генерация реализации элемента управления в конструкторе форм двойным кликом по элементу в случае, когда в конце раздела implementation (перед новосгенерировавшейся процедурой) оказывается коротко определенная функция (например, function Sqr3(x: integer) := xxx; ). Процедура генерируется перед символом “;” в конце коротко сгенерированной функции и это приводит к ошибке компиляции.
Выглядит это так:
function Sqr3(x: integer) := xxx
procedure Form1.button1_Click(sender: Object; e: EventArgs);
begin
end;;
После завершающей операторной скобки сгенерированной процедуры оказывается два символа “;”.
Пишет, что Нельзя преобразовать тип string к LinkedListNode в строке b := a.first;
var
a: System.Collections.Generic.Linkedlist<string>;
b: System.Collections.Generic.Linkedlistnode<string>;
begin
a := new System.Collections.Generic.LinkedList<string>;
a.AddFirst ('a');
b := a.first;
end.
тут скорее всего с intellisense проблема, который неправильно тип a.first показывает:
var
a: System.Collections.Generic.Linkedlist<string>;
begin
a := new System.Collections.Generic.LinkedList<string>;
a.AddFirst ('a');
writeln(a.First.GetType);
end.
PascalABCCompiler.Core v3.1.0.1267 (10.07.2016), debug version
Runtime version: 4.0.30319.42000
OS version: Microsoft Windows NT 6.2.9200.0
Processor count: 4
WorkingSet: 105712 kb
uses Robot;
begin
Task('a1');
end.
Текст ошибки
Ошибка времени выполнения: System.Reflection.TargetParameterCountException: Несоответствие числа параметров.
Стек:
в System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
в System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
в RobotField_implementation______.RobotField_implementation______.__InitModule()
в RobotField.RobotField.InitModule()
в Robot.Robot.InitModule()
в RBa1.Program.$Init()
в RBa1.Program.Main()
Версия 3.1. Windows XP. Стояла версия 2.2, потом написал игру у друга на компе, у него версия 3.1 стояла. Скопировал у него установщик, у него всё компилилось, а себе поставил–этот же файл не компилится. Ругается на random:
Сначала “невозможно явно привести тип integer к system.Random”, потом пишет
"Неизвестное имя: random". Скачал последнюю сборку с сайта- проблема осталась. Переустановил- всё равно ругается. Что делать?
когда я нажимаю Ctrl+Space у меня вылазят только зарезервированые слова, нажал я между begin end. в главном модуле программы… не удобно так работать, оно понимает, к примеру, system только если я нажму точку, но если я напишу sys и ктрл+пробел оно не дополнит
Странно, после компиляции Kaspersky во всю кричит на программу, якобы в ней обнаружено HEUR:Trojan.Win32.Generic обновился до новой сборки, Kaspersky на время утих, а после пары изменений в коде, снова начал ругаться. Заранее говорю, код - ни разу не вирус.