Ошибки PascalABC.NET

Форматирование кода стало ломать методы расширения для Generic- типов.

function System.Collections.Generic.List<T>.Random(): T;
begin
  result := self[PABCSystem.Random(self.Count)];
end;

компилируется нормально, если отформатировать, автоматически сокращается описание до

function List<T>.Random(): T;
begin
  result := self[PABCSystem.Random(self.Count)];
end;

И не компилируется с сообщением

Недопустимо описывать метод для синонима шаблонного типа

В принципе жить можно, но не очень удобно каждый раз возвращать полное название.

Да, мы в курсе.

Скачайте новую версию - исправлено.

2 лайка

C Новым Годом!

Версия 3.0, сборка 1039.

Правильно ли установлены крайние значения для “int64”, “longword, cardinal” и “uint64”?

Посмотрите:

program Pif_Paf;
var
  x,y: real;
  a: int64; 
  b: integer;
begin
  a := 0;
  b := 0;
  repeat
    x := Random;
    y := Random;
    a := a + 1;
    if ((x < 0.000000001) or (y < 0.000000001)) then 
    begin
      b := b + 1;
      writeln(b:3, a:15, milliseconds():10, x:22, y:22);
    end
  until a > 10000000000;
  writeln (' Конец программы ', milliseconds():10);
end.

Несколько вопросов: 1.) “а” становится отрицательным…? 2.) Почему программа всё-таки завершает работу?

Результат работы программы:

  1      763889016     43641     0.797020635473086                     0
  2     1187522192     67829                     0     0.612227891391249
  3     1227867247     70129     0.516337103450828   4.6566128752458E-10
  4     1805308086    103100     0.710269268467216                     0
  5     1850827078    105695   4.6566128752458E-10     0.988287678448617
  6     1865132819    106514     0.755673119684529   4.6566128752458E-10
  7    -2111166176    124700                     0     0.741580432160562
  8    -2061793876    127516    0.0430988008357113  9.31322575049159E-10
  9    -1182746405    177645  9.31322575049159E-10     0.424749221850535
 10     -824675824    198057                     0     0.472625514246815
 11     -561436122    213061                     0     0.406789755172464
 12     -463914965    218624                     0     0.541352988472838
 13     -318352611    226928  9.31322575049159E-10     0.448757509444262
 14     -257347741    230421   4.6566128752458E-10     0.450357650616373
 15      -64728554    241424     0.101988723083394   4.6566128752458E-10
 16      -43428568    242638     0.569834934812894  9.31322575049159E-10
 17      -10238955    244531     0.572170391013925                     0
 18      152767907    253815     0.202438492887858                     0
 19      328624291    263837     0.863554813835563   4.6566128752458E-10
 20      786597231    290072     0.800498753693187                     0
 21     1624233759    337825     0.094699202615162   4.6566128752458E-10
 22     1691385682    341655                     0     0.809322355691959
 23    -1983088521    377018                     0     0.624812247522554
 24     -358090850    469632      0.90888921493147  9.31322575049159E-10
 25      306613843    507609    0.0550177474762396   4.6566128752458E-10
 26      513723491    519413                     0     0.478204154632149
 27      892818248    541021   4.6566128752458E-10     0.514894075000144
 Конец программы     570497

Это баг в форматном выводе. a:15 приводит a к типу integer. Само значение a правильное. Ошибку исправим

Уже исправили. Версия на сайте

Очень надеюсь,что в последний версии отрицательный single правильно делится.

А проверить не пробовали?

Мне проще сначала убедиться

type
  someclass = class
    procedure genproc<T>(var x, y: T);
    begin
    end;
    procedure Test(A, b: integer);
    begin
     genproc(a, b);
    end;
  end;

begin
  
end.

Первая компиляция - внутренняя ошибка Вторая компиляция - внутренняя ошибка Третья компиляция - внутренняя ошибка Многократное нажатия клавиши F9- вообще зацикливание основного потока. Пора бы внедрить в среду АвтоДамп. Но это лечится с помощью self…

Подскажите пожалуйста, почему не работает этот код

Потому, что PNG-файлы не компилируются.А как насчет, например, выложить текст программы вместо скрина? ^^ И как насчет выложить текст ошибки вместо, гхм, того, что там есть?

Ваш пример работает. Переинсталлируйте Паскаль и попробуйте повторно.

Если не заработает - присылайте внутреннюю ошибку.

14 posts were split to a new topic: Обсуждение одной неработающей программы

После обновления Pascal ABC Net до 3.0 сборка 1164

для любой программы выводится ошибка "() : Ошибка чтения PCU файла ‘C:\PABCWork.NET__RedirectIOMode.pcu’"

Обновление было произведено, потому что перестал работать модуль GraphABC.

В результате перестало работать вообще все. Как жить дальше?

Удалите файл C:\PABCWork.NET__RedirectIOMode.pcu

и другие системные pcu из папки PABCWork.NET. Их там не должно быть

Подскажите пожалуйста, в чём проблема? (В окне вывода)

@Lucky_Man кроме скриншота нужно публиковать полный текст, чтобы можно было проверить (включая SumLengths).

Вот модуль и сама программа: MySeqs.pas (2,9 КБ)htask-05.pas (645 Байт)

Да, это ошибка в PCU. Будем исправлять. Пока:

  1. Удалите pcu
  2. Поставьте в модуле директиву {$savepcu false}
  3. Запустите основную программу.

Должно работать