Ошибки PascalABC.NET

В панели навигации по коду отсутствуют возвращаемые типы для функций.

При запуске программы без связи с оболочкой (Shift+F9) пишет: ProgrammRunner.exe - .NET Framework Initialization Error Unable to find a version of the runtime to run this application. Что делать?

ОС Windows XP (SP3) NET Framework 4

Попробуйте перекомпилировать файл ProgrammRunner.pas и скопировать его в Program Files \PascalABC.NET
ProgrammRunner.pas (608 Байт)

Спасибо

reset(storage.savefile);
read(storage.savefile, storage.playername);

Компилятор выдаёт ошибку “Нельзя считывать данные этого типа”, курсор останавливается на второй строке перед “savefile”. savefile - бестиповой файл, playername - строка (оба статические). Вчера нормально компилировалось, сегодня сделал несколько изменений в совсем другом модуле - и вот результат. [скриншот][1] UPD: обновил паскаль, проблема всё ещё появляется UPD2: от правки к правке проблема то исчезает, то появляется! [1]: http://storage1.static.itmages.ru/i/15/0503/h_1430644575_1261411_476b672d50.png

playername длинная строка? хотелось бы увидеть хотя бы описание класса storage

В форме ограничение на неё не более 255 символов, по умолчанию строка из 15 символов. Класс storage описан в этом модуле (Dropbox) (сильно ногами не пинайте, учился и учусь сам)

Ошибка в дебагере: Не показывает значения полей объектов, передаваемых как var параметры.

Со стандартными типами всё правильно.

А вот с пользовательскими уже возникает проблема.

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

Доходит до какой-то границы и вылезает ошибка Причём в функции деления стоит обнуление (nil на все локальные динамические массивы для этой функции) в разделе finally, но срабатывает оно только пару раз в начале цикла.

Делал так:

Результат тот же: ошибка.

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

Сделал так:

Исключение не обрабатывается, вылезает та же ошибка в окошке.

А вот ещё: В другом цикле подошли значения X и Y, которые нужно вычесть друг из друга. При вычитании выдаёт ошибку неверной индексации. Если те же параметры написать вне цикла, отдельно, то ошибок никаких нет.

[Все операторы писались специально для длинной арифметики, и очень строго проверялись на наличие ошибок]

Есть идеи?

Код выложите полный

Там полторы тысячи строк.

UPD: отправил в лс

Добрый день. При выполнении простенького задания столкнулся с проблемой. Вот код

var
  i,k: integer;
  x1, x2, n: real;
  mass_x: array of real;
begin
  write('x1= ');read(x1);writeln();
  write('x2= ');read(x2);writeln();
  write('Шаг= ');read(n);writeln();
  k := 0;
  if x2>x1 then
  k:=round((x2-x1)/n)
  else  k:=round((x1-x2)/n);
  SetLength(mass_x, k + 1);
  for i := 0 to k do
  begin
    mass_x[i] := x1;
    write('mass_x[',i,']= ', mass_x[i]);writeln;
    if x2>x1 then
    x1 := x1 + n
    else x1 := x1 - n;
  end;
end.

Если х1 задать -1 а х2=1, а шаг сделать 0.1 то там где должен быть 0 почему то получается вот эта штука: -1.38777878078145E-16. Тот же эффект и при x1=1, x2=-1

Однако если в переменной n указать целое число, то ноль нормально записывается как и должен. Помогите в решении вопроса =)

У вас не только вместо 0 число -1.38777878078145E-16(Число близко к нулю). И вместо 0.1 число 0.099999999999999999. О вещественных числах,их представлении,погрешности и точности можно почитать здесь: https://sites.google.com/site/ltwood/projects/numpro/float

Я нашёл и исправил ошибку в алгоритме деления, теперь всё работает.

исправлено

исправлено

Во время компилирования данного кода происходит внутренняя ошибка компиляции. Почему?

begin
  var a := new System.Collections.Generic.Dictionary<string, integer>;
  a.Add('a', 1);
  a.Add('b', 2);
  a.Add('c', 3);
  foreach var x in a.Keys do
    writeln(x, a[x]);
end.

все, поняла в чем ошибка) Давно Паскаль не обновляла. Обновила и все заработало)))

Можно писать так

Я, кстати, сегодня на последнем Паскале несколько раз пробовал foreach по Dictionary, ни разу не получилось без указания типа для переменной (KeyValuePair) :frowning: