type
t1=class
procedure p1;
procedure p2;
procedure p3;
end;
begin end.
Я нажимаю ПКМ на p2 и “Сгенерировать реализацию”. После этого реализация генерируется не только для p2, но ещё и для p1 и p3. Это ошибка? Вообще это обычно удобно, но не всегда. Возможно стоит сделать 2 кнопки: просто “сгенерировать реализацию”, которая будет работать для чего то 1, и кнопка которая будет генерировать реализацию сразу всего?
Так это другой картеж, с семью элементами: шесть чисел и один картеж. Там именно восьмой элемент был особого типа, как раз для решения таких проблем и создания n-tuple.
Например, в C# Interactive VS можно набрать var t9 = (1,2,3,4,5,6,7,8,9);
Потом на следующей строчке начать набирать t9.ToTuple и посмотреть выбор, который он предлагает. В нём видно, что разбивка идёт именно 7+2.
А почему тогда на CIL руками не писать, зачем удобства, действительно… Ну а всё таки, “Сгенерировать реализацию”, зачем то существует, как именно оно должно работать?
Я не могу найти причину ошибку в этой программе (93,8 КБ). Сейчас если откомпилировать BFC.pas получаем внутреннюю ошибку компилятора. Если удалить все .pdb и .psu, BFC.pas откомпилируется 1 раз нормально, а на следующий снова получаем ту же ошибку.
Я пробовал убирать части программы, удаляя все .psu и .pdb перед каждой компиляцией. Но в определённый момент ошибка пропадает и если откатить последние части программы, которые я убрал - она не возвращается.
У меня вся корзина уже в .psu и .pdb файлах, после нескольких попыток начать заново. Возможно есть какой то другой способ, менее геморный и, что важнее, более рабочий?
Нет, всё правильно, потому что следующий код тоже не вызовет ошибку:
begin
var a := Arr(1,3,5);
for var i := 5 to a.Length-1 do
writeln(a[i]);
end.
Узнать как оно работает точнее, потому что для этого используется WinAPI. Но в любом случае, это стандартная функция .Net . Паскаль лишь добавляет вывод 0 когда subs пустая или nil, вместо исключения.