Пример:
procedure GG(Arrra : array of integer);
begin
//что получим, если написать
ShowMessage(IntToStr(Arrra[1]));
end;
procedure BB();
var blabla : array [1..20] of integer;
begin
blabla[1]:=12;
GG(blabla);
end;
Почему в сообщении не "12"? Вообще почему идет чтение не 1-го элемента?
Здравствуйте, <Аноним>, Вы писали:
А>Пример:
А>А>procedure GG(Arrra : array of integer);
А>begin
А> //что получим, если написать
А> ShowMessage(IntToStr(Arrra[1]));
А>end;
А>procedure BB();
А>var blabla : array [1..20] of integer;
А>begin
А> blabla[1]:=12;
А> GG(blabla);
А>end;
А>
А>Почему в сообщении не "12"? Вообще почему идет чтение не 1-го элемента?
array of integer, как параметр функции — начинается всегда с 0.
"Within the body of a routine, open array parameters are governed by the following rules.
They are always zero-based. The first element is 0, the second element is 1, and so forth. The standard Low and High functions return 0 and Length — 1, respectively. The SizeOf function returns the size of the actual array passed to the routine."

Евгений
Здравствуйте, Аноним, Вы писали:
А>Пример:
А>А>procedure GG(Arrra : array of integer);
А>begin
А> //что получим, если написать
А> ShowMessage(IntToStr(Arrra[1]));
А>end;
А>procedure BB();
А>var blabla : array [1..20] of integer;
А>begin
А> blabla[1]:=12;
А> GG(blabla);
А>end;
А>
А>Почему в сообщении не "12"? Вообще почему идет чтение не 1-го элемента?
Неплохо бы было сначала инициировать етот масив:
procedure BB();
var blabla : array [1..20] of integer;
begin
SetLength(blabla, 2);
blabla[1]:=12;
GG(blabla);
end;
Здравствуйте, Vuhasty, Вы писали:
V>Неплохо бы было сначала инициировать етот масив:
НИ В КОЕМ СЛУЧАЕ!
procedure BB();
var blabla : array [1..20] of integer;
begin
SetLength(blabla, 2);
blabla[1]:=12;
GG(blabla);
end;
SetLength применимо только к динамическим массивам. Т.е. к таким, которые декларируются без указания размера:
var dynamicBlaBla: array of integer;
... << RSDN@Home 1.0 beta 6 >>
Здравствуйте, <Аноним>, Вы писали:
А>Пример:
А>А>procedure GG(Arrra : array of integer);
А>begin
А> //что получим, если написать
А> ShowMessage(IntToStr(Arrra[1]));
А>end;
А>procedure BB();
А>var blabla : array [1..20] of integer;
А>begin
А> blabla[1]:=12;
А> GG(blabla);
А>end;
А>
А>Почему в сообщении не "12"? Вообще почему идет чтение не 1-го элемента?
Надо установить размерность массива до его использования функцией
Попробуй так
procedure GG(Arrra : array of integer);
begin
ShowMessage(IntToStr(Arrra[1]));
end;
procedure BB;
var blabla : array of integer;
begin
SetLength(blabla, 2);
blabla[1]:=12;
GG(blabla);
end;
Удачи.

... << RSDN@Home 1.0 beta 6a >>