![]() |
|
|
#1
|
|||
|
|||
![]() Код:
procedure TForm1.Button1Click(Sender: TObject); var i,j: integer; l1,l2:integer; a:array of real; b:array of real; c:array of array of real; begin l1:=Memo1.Lines.Count; l2:=Memo2.Lines.Count; setlength(a,l1); setlength(b,l2); setlength(c,l1,l2); For i:= 1 to l1 do begin a[i]:= strtofloat(Memo1.Lines[i-1]); end; For j:= 1 to l2 do begin b[j]:= strtofloat(Memo2.Lines[j-1]); end; For i:= 0 to (l1-1) do begin For j:= 0 to (l2-1) do begin c[i,j]:=a[i+1]*b[j+1]; end; end; Почему у меня вылетает ошибка Invalid pointer operation? |
#2
|
|||
|
|||
![]() На какой строке? Тут телепатов нет...
|
#3
|
|||
|
|||
![]() Цитата:
Код:
c[i,j]:=a[i+1]*b[j+1]; |
#4
|
|||
|
|||
![]() Ага, понятно.
Дело в том, что индексация динамических массивов начинается с 0. Ты просто вылетаешь за границу массива и попадаешь в защищенную облась. Если включишь в компиляторе нужную проверку,то будешь получать ошибку Out of bounds. Используй при навигации по динамическим (да лучше всего по любым) массивам функции Low() и High() (в смысле для определения их границ). |
#5
|
|||
|
|||
![]() А в двумерных динамических тоже с 0?
|
#6
|
||||
|
||||
![]() Цитата:
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |