Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Kron1C
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 2
#1

Исправление ошибки "Constant object cannot be passed as var parameter"

09.06.2015, 09:15. Просмотров 415. Ответов 1
Метки нет (Все метки)

Ругается на параметр "a" с ошибкой "Constant object cannot be passed as var paramete"

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const      size  = 3;
type       matrix = array[1 .. size, 1 .. size] of real;
const      a : matrix = ((1,  2,  3),(4, 4, 5),(7,  8,  9));
 
function minusOne(n : integer) : integer;
  begin
     minusOne := (1 - 2*Byte(Odd(n)));
  end;
 
function get_addr(i, j : integer; const n : integer) : integer;
  begin
     get_addr := Pred(i) * n + j;
  end;
 
 
function det(var p; const n : integer) : real;
  type
     vector = array[1 .. size * size] of real;
  var
     my_p : vector absolute p;
     pp : ^vector;
     s : real;
     i, j, curr : integer;
  begin
     s := 0.0;
     if n = 2 then
        s := my_p[1]*my_p[4] - my_p[2]*my_p[3]
     else
        for i := 1 to n do
        begin
           GetMem(pp, Sqr(n - 1) * SizeOf(real));
           curr := 1;
           for j := 1 to n do
              if j <> i then
              begin
                 move(my_p[get_addr(j, 2, n)], pp^[get_addr(curr, 1, Pred(n))],
                      pred(n) * SizeOf(real));
                 inc(curr);
              end;
           s := s + minusOne(Succ(i)) * my_p[get_addr(i, 1, n)] * det(pp^, Pred(n));
           FreeMem(pp, Sqr(Pred(n)) * SizeOf(real))
        end;
     det := s;
 
  end;
 
begin
   Writeln(det(a, 3):0:0 );
   readln;
end.
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2015, 09:15
Ответы с готовыми решениями:

Constant object cannot be passed as var parameter
Всем доброго времени суток. Ипользую данный код: procedure...

[Ошибка] Constant object cannot be passed as var parameter
procedure TForm1.Button1Click(Sender: TObject); const x: array of byte = ($01,...

Ошибка: Constant object cannot be passed as var parameter
else if (TS = 'PRIVMSG') then begin uMessage:=''; ...

Ошибка: [Error] Project1.dpr(11): Constant object cannot be passed as var parameter Operator not applicable to this operand type
Помогите пожалуйста, в чем ошибка? помогите решить unit Unit1; interface ...

Ошибка Constant object cannot be passed as var parameter
Привет. При пропускание через функции Insert и Delete, выдает ошибку(в название...

1
D1973
Модератор
3387 / 2428 / 1198
Регистрация: 21.01.2014
Сообщений: 10,036
Записей в блоге: 3
Завершенные тесты: 1
09.06.2015, 09:22 #2
Вот так объявить функцию попробуй
Delphi
1
function det(p : matrix; const n : integer) : real;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2015, 09:22

Возникает ошибка: "Constant object cannot be passed as var parametr".
procedure TForm1.Button1Click(Sender: TObject); type mass =array of real;...

Сдвиг влево - "Constant expression violates subrange bounds"
Доброго времени. procedure TForm1.test; var h,k: LongWord; begin ...

Вылазит ошибка "constant expression expected", не пойму в чем дело
unit Unit2; interface uses Windows, Messages, SysUtils, Variants,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru