![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте.
Есть тривиальный кусок кода: Код:
var i: integer; mas_p:array[0..100] of integer; begin for i:=0 to 80 do mas_p[i]:=i; ShowMessage(IntToStr(low(mas_p))); // выдает 0 ShowMessage(IntToStr(high(mas_p))); // выдает 100 ShowMessage(IntToStr(length(mas_p))); // выдает 101 ShowMessage(IntToStr(SizeOf(mas_p))); // выдает 404 end; Почему delphi7 выдает high = 100? Когда у меня введено в массив только 81 значение И как правильно получить количество значений в массиве (в данном примере 81)? |
#2
|
||||
|
||||
![]() Функция Low возвращает минимальный индекс массива, функция high - максимальный индекс массива. Тоесть, если ты массив обьявишь так:
Код:
mas_p:array[-14..87] of integer; Функция length возвращает длину массива, SizeOf - размер (в байтах) переменной=длина массива*SizeOf(элемент массива)=101*4 (4 - размер типа Integer). Чтобы найти минимальное и максимальное значения, нужно осуществлять перебор по элементам массива и выбырать меньшее/большее. |
#3
|
||||
|
||||
![]() Цитата:
у тебя массив длинной 101 элемент mas_p:array[0..100] of integer; заполняешь его значениями ты только до mas_p[80] --> for i:=0 to 80 do остальное за тебя кто-то другой заполняет. Решение при заполнении использовать конструкцию Код:
for i:=Low(mas_p) to High(mas_p) do Код сырец |
#4
|
||||
|
||||
![]() -даже если ты ничего "не введешь" 100 будет
-никак, либо считать самому -используй списки (TList), динамические массивы Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
o919322 (03.10.2012)
|
#5
|
|||
|
|||
![]() Цитата:
По-умолчанию при инициализации массива значения массива чем заполнены? Как определить что значение не заполнено? Можно простой пример? |
#6
|
||||
|
||||
![]() Массив - это участок памяти. Каждый условный участок - это большое количество бит. У бита есть 2 состояния - единица или ноль, у него нет "пустого" состояния. Чем заполнен массив после объявления? Как повезёт. Иногда - нулями, иногда - мусором, оставшимся после того, как этот же блок освободил кто-то другой.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#7
|
||||
|
||||
![]() Есть такое понятие как динамический массив
Код:
var Ar:array of Integer Код:
SetLength(Ar,0) Код:
SetLength(Ar,Length(Ar)+1) работа с массивом также Код:
Ar[i]:=i; когда ты создаёшь массив Delphi только выделяет память из имеющейся свободной и ни кто не знает что было в этой памяти до того как она стала свободной, там могу быть нули а может быть и шлак всякий Код:
SetLength(Ar,Length(Ar)-1) функция Код:
Length(Ar) P.S. нумерация элементов динамического массива начинается с 0 Код сырец |
Этот пользователь сказал Спасибо Lost_Fish за это полезное сообщение: | ||
Евгений79 (05.10.2012)
|