![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Я объявил в модуле тип: type dArrRe = array of real;
В процедуре я использую переменную этого типа, и когда я хочу узнать размер массива: i:= High(Arr) или i:= Length(Arr) - 1 , у меня происходит ошибка: Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004A2F44 in module 'Project1.exe'. Read of address 00C98854'. Process stopped. Use Step or Run to continue. Почему? Может я чтото не тк делаю? |
#2
|
|||
|
|||
![]() Ты объявил динамический массив! Но длину его не задал. Юзай функцию
Код:
SetLingth(Arr, длина) |
#3
|
|||
|
|||
![]() Дело в том что эту переменную я передал процедуре в качестве параметра, а длина массива у меня была определена до вызова процедуры
|
#4
|
|||
|
|||
![]() Вот такая конструкция работает превосходно
Код:
type dArrRe = Array of Real; procedure Proc(Arr: dArrRe); var i: Integer; S: String; begin S := ''; for i := 0 to Length(Arr)-1 do S := S + FloatToStr(Arr[i]); Form1.Edit1.Text := S end; procedure TForm1.Button1Click(Sender: TObject); var Arr: dArrRe; I: Integer; begin SetLength(Arr, 5); for i := 0 to 4 do Arr[i] := i+1; Proc(Arr); end; |