Залили правильную версию. Попробуйте
Спасибо, попробую, как доберусь.
Вот ещё одна проблема: замыкания для self
работают только если явно его указывать. Например.
type A = class
procedure f(x:integer);
begin
print(x);
end;
procedure g();
begin
Arr(1, 2, 3).ForEach(x -> self.f(x));
end;
end;
begin
end.
Не работает, если убрать self
, причём по тексту ошибки непонятно, чего он хочет. Студенты путаются и бросают использовать лямбды, что прискорбно. Нельзя ли сделать, чтобы работало без self
или хотя бы сообщение об ошибке с указанием его добавить?
function sqrtN(P,e,x0:double); Не указан возвращаемый тип функции ,но всё успешно компилируется . Подсказка ,кстати, говорит ,что это процедура. Так и должно быть ?
Полный код приведите пожалуйста
Исправили. Версия на сайте.
program fun;
var P:real;
// Вычисление квадратного корня из P с погрешностью е при начальном приближении x0.
function sqrtN(P,e,x0:double);
var x,dx,f:double;
begin
x:=x0;
while(true) do
begin
f:=x*x-P;
if(abs(f)<e) then break;
dx :=-f/(2.0*x);
x:=x+dx;
end;
sqrtN:=x;
end;
begin
writeln('Введите P');
readln(P);
writeln('Корень из P:',sqrtN(P,0.00001,1):5:3);
end.
У Вас какая-то старая версия. В последней версии - ошибка компиляции, что правильно.
По поводу procedure - да, в Intellisense - неточность. Постараемся исправить
Спасибо. Успехов в развитии проекта.
begin
var t := new System.Dynamic.ExpandoObject();
t.name = 'name';
end.
Так же не работает.
У нас не падает - правда, сообщение об ошибке дурацкое - исправим. А у Вас последняя версия?
Ну правильно - тут = вместо := и name нет в ExpandoObject:
https://msdn.microsoft.com/ru-ru/library/system.dynamic.expandoobject(v=vs.110).aspx
Дело не в “:=” (это я опечатался, когда код переписывал), и не в том, что там нет name. Прочтите описание:
Представляет объект, члены которого можно динамически добавлять и удалять во время выполнения.
Там же ниже пример:
class Program
{
static void Main(string[] args)
{
dynamic employee, manager;
employee = new ExpandoObject();
employee.Name = "John Smith";
employee.Age = 33;
manager = new ExpandoObject();
manager.Name = "Allison Brown";
manager.Age = 42;
manager.TeamSize = 10;
WritePerson(manager);
WritePerson(employee);
}
private static void WritePerson(dynamic person)
{
Console.WriteLine("{0} is {1} years old.",
person.Name, person.Age);
// The following statement causes an exception
// if you pass the employee object.
// Console.WriteLine("Manages {0} people", person.TeamSize);
}
}
// This code example produces the following output:
// John Smith is 33 years old.
// Allison Brown is 42 years old.
В приведённом ниже модуле при нажатии кнопки автоформатирования почему-то дублируется fCalcOp в 45 строке.
CalcUnit.pas (5,2 КБ)
Почему-то выдает ошибку
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
begin
Writeln('информатика'[3:9])
end.
А вот так - нормально работает. Странно очень.
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
begin
var s:='информатика';
Writeln(s[3:9])
end.
А вот так работает:
begin
Writeln(('информатика')[3:9])
end.
Так - понятно, литеральная константа превратилась в выражение. Но почему компилятор не понимает, что в соответствии с синтаксисом литерал и без скобок есть частный случай строкового выражения?
У меня на Убунту 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 …
Вылечил установкой пакета libmono-system-numerics4.0
. Вдруг кому поможет…
Да, недавно было добавлено представление комплексных чисел в виде (a,b) и компилятор стал использовать System.Numerics. Странно, что он не идет в поставку mono-full