Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не пойму где глюк с массивом. [D6, Win2k]


Pavelkq ©   (2005-03-05 10:06:00) 

Здравствуйте! Имею динамический массив Indexes. Сравниваю его с одной переменной и если она оказывается больше надо удалить текущий элемент массива со сдвигом вверх (нулевой элемент не сравнивается и не меняется никогда). Вот код (все переменные типа Integer)
 
Set1:=1;
 i2:=MaxInd;//Round(MaxInd*(100-Form1.TrackBar1.Position)/100);
 While Set1 < EndInd do
 begin
   i1:=Indexes[Set1].Index;
   if i1


evvcom   (2005-03-05 10:39:00) [1]

Я могу больше сказать. Второй цикл (внутренний) вообще лишний. Move + F1 еще тебе поможет.


Pavelkq   (2005-03-05 10:32:00) [2]

А-а-а-а, допетрил! Не понял почему, но у меня в коде было
While Set1 <= EndInd do
а надо именно
While Set1 < EndInd do
Спасибо evvcomза наведение на мысль!


begin...end   (2005-03-05 10:25:00) [3]

> Pavelkq   (05.03.05 10:18) [2]

> Аналог High(Indexes)

Точно? Сравните EndInd, High(Indexes) и Length(Indexes). Если EndInd - это всё же длина , то ошибка есть, по крайней мере,  вусловии вложенного цикла: While Set2 < =EndInd do.


Pavelkq   (2005-03-05 10:24:00) [4]

Да, точно подзабыл этот момент, но суть не меняется. В худшем случае в массиве остается только 1 элемент, т.е. нулевой. При этом SetLength(Indexes,1);срабатывает верно.


Pavelkq   (2005-03-05 10:20:00) [5]

EndInd, конечно, тороплюсь...


Pavelkq   (2005-03-05 10:18:00) [6]

EndEnd - это переменная сыитающая конец массива. Аналог High(Indexes)


evvcom   (2005-03-05 10:18:00) [7]

По строке SetLength(Indexes,EndInd); ясно, что у автора путаются понятия последнего индекса и длины массива. Длина массива всегда на 1 больше последнего индекса в динам. массиве, так как индекс первого элемента = 0.


begin...end   (2005-03-05 10:10:00) [8]

> Pavelkq   (05.03.05 10:06)

Что такое EndInd?


Наверх

Титульная страница Поиск, карта сайта Написать письмо