dim Опубликовано 12 апреля, 2018 Поделиться Опубликовано 12 апреля, 2018 (изменено) блин, что делаю не так (под андроид) var iio:integer; begin rz:=High(CartList);// возвращает 0 хотя есть 1 запись в массиве for iio := 0 to rz do begin // цикл не выполняется так как iio=1 в отладчике end; уже всю голову сломал подскажите что не так Изменено 13 апреля, 2018 пользователем dim Brovin Yaroslav 1 Цитата Ссылка на комментарий
0 Akad Опубликовано 12 апреля, 2018 Поделиться Опубликовано 12 апреля, 2018 Что такое CartList? Зачем High использовать (от слова вообще)? Что такое rz? Если for 0 to 0, то 1 раз цикл выполнится. P.S. Почему бы на форумах не перестать считать всех телепатами? Brovin Yaroslav 1 Цитата Ссылка на комментарий
-1 ENERGY Опубликовано 12 апреля, 2018 Поделиться Опубликовано 12 апреля, 2018 (изменено) High(CartList) - CartList это или Enumeration type - перечисление или массив. В Enumeration значения идут от нуля. Т.е. TMyType = (Val1, Val2, Val3) - это по факту Byte со значениями 0, 1, 2. High - вернет максимальный индекс из этого перечисления или массива. High(TMyType ) = 2 . Low соответсвенно вернет первый индекс - 0 или тот который идет первым (ведь массив может и не от нуля начинатся, если это указать в коде) rz - обычная переменная integer Если 0 to 0 - цикл не выполнится. Изменено 12 апреля, 2018 пользователем ENERGY Цитата Ссылка на комментарий
0 krapotkin Опубликовано 13 апреля, 2018 Поделиться Опубликовано 13 апреля, 2018 а если for i:=1 to 1 ?? )))) Цитата Ссылка на комментарий
0 dim Опубликовано 13 апреля, 2018 Автор Поделиться Опубликовано 13 апреля, 2018 тогда i=2 ставит Цитата Ссылка на комментарий
0 dim Опубликовано 13 апреля, 2018 Автор Поделиться Опубликовано 13 апреля, 2018 7 часов назад, Akad сказал: Что такое CartList? Зачем High использовать (от слова вообще)? Что такое rz? Если for 0 to 0, то 1 раз цикл выполнится. P.S. Почему бы на форумах не перестать считать всех телепатами? потому что это не важно, проблема в том, что for iio := 0 to rz do begin назначает iio=1 и цикл не выполняет (rz=0 это написано) причем если делаешь for iio := 1 to rz+1 do begin, в просмотре показывает iio=2 и цикл опять не выполняется такое ощущение что firemonkey сошла сума Цитата Ссылка на комментарий
0 krapotkin Опубликовано 13 апреля, 2018 Поделиться Опубликовано 13 апреля, 2018 я тут соглашусь со Станиславским. не верю ) дайте код High - это ИНДЕКС последнего элемента массива если в массиве 1 элемент, то индекс его равен 0 Tumaso 1 Цитата Ссылка на комментарий
0 dim Опубликовано 13 апреля, 2018 Автор Поделиться Опубликовано 13 апреля, 2018 TCartList = array of TRec; ... var lb:TListBoxItem; rz:integer; iio:integer; CartList:TCartList; Rec:TRec; begin if CartList<>nil then begin rz:=Length(CartList); for iio := 0 to rz-1 do begin Rec:=CartList[iio]; end; end; end; все банально Цитата Ссылка на комментарий
0 krapotkin Опубликовано 13 апреля, 2018 Поделиться Опубликовано 13 апреля, 2018 ну дык CartList - локальная переменная. не инициализирована. её б сначала SetLength, а потом уже делать что-либо SetLength(CartList,1); if CartList<>nil then begin rz:=Length(CartList); for iio := 0 to rz-1 do begin Rec:=CartList[iio]; end; end; rz=1; цикл проходит 1 раз все штатно Цитата Ссылка на комментарий
0 dim Опубликовано 13 апреля, 2018 Автор Поделиться Опубликовано 13 апреля, 2018 ну дык CartList - локальная переменная. не инициализирована. ну я же отделил ... это значит она объявлена где то еще и там все с ней сделано по ней как раз проблем нет, проблема в цикле. я пока другим циклом сделал while , а там "шамана надо вызывать" хотя в других процедурах for работает штатно Цитата Ссылка на комментарий
0 FREEFAR Опубликовано 13 апреля, 2018 Поделиться Опубликовано 13 апреля, 2018 8 минут назад, dim сказал: ну дык CartList - локальная переменная. не инициализирована. ну я же отделил ... это значит она объявлена где то еще и там все с ней сделано по ней как раз проблем нет, проблема в цикле. я пока другим циклом сделал while , а там "шамана надо вызывать" хотя в других процедурах for работает штатно где может быть в другом месте инициализирована CartList если в конкретном примере она объявлена в процедуре kami 1 Цитата Ссылка на комментарий
0 dim Опубликовано 13 апреля, 2018 Автор Поделиться Опубликовано 13 апреля, 2018 блииииин, еще раз говорю CartList не имеет отношения к вопросу, вопрос касается цикла Цитата Ссылка на комментарий
0 krapotkin Опубликовано 13 апреля, 2018 Поделиться Опубликовано 13 апреля, 2018 ну так и приведите пример то. циклы не могут быть сломаны. это привело бы к полному коллапсу Цитата Ссылка на комментарий
0 dim Опубликовано 13 апреля, 2018 Автор Поделиться Опубликовано 13 апреля, 2018 24 минуты назад, krapotkin сказал: ну так и приведите пример то. циклы не могут быть сломаны. это привело бы к полному коллапсу какой еще пример привести? я и так привел пример кода всей процедуры, написал какие значения получает переменная rz:=Length(CartList); возвращает 1 соответственно for iio := 0 to rz-1 do begin должен быть цикл от 0 до 0 (1-1=0) но он делает цикл от 1 до 0 если я делаю for iio := 1 to rz do begin то он делает от 2 до 1 значения iio я смотрю в отладчике я уже не знаю как описать ситуацию более понятно для Вас и отстаньте от CartList она вообще тут не причем, я так же делал и rz:=1; Цитата Ссылка на комментарий
0 #WAMACO Опубликовано 13 апреля, 2018 Поделиться Опубликовано 13 апреля, 2018 11 часов назад, dim сказал: по ней как раз проблем нет, проблема в цикле. С циклом все в норме! Не надо "Ля-ля" Цитата Ссылка на комментарий
0 Akad Опубликовано 13 апреля, 2018 Поделиться Опубликовано 13 апреля, 2018 20 часов назад, ENERGY сказал: Если 0 to 0 - цикл не выполнится. Мммм... Поспорим? 14 часов назад, dim сказал: причем если делаешь for iio := 1 to rz+1 do begin, в просмотре показывает iio=2 и цикл опять не выполняется Значит цикл выполняется. Просто у Rad Studio не все "ходы на мобильных платформах записаны". По крайней мере на 10.2 встречал, что крусор отладчика или прыгает взад-вперед, или пропускает небольшие блоки. 12 часов назад, dim сказал: блииииин, еще раз говорю CartList не имеет отношения к вопросу, вопрос касается цикла Он есть в коде, рядом с циклом. Его длинна - это параметр цикла. Как может не иметь к нему отношения - для меня загадка. 12 часов назад, dim сказал: если я делаю for iio := 1 to rz do begin то он делает от 2 до 1 Это реально или ваша фантазия? 12 часов назад, dim сказал: значения iio я смотрю в отладчике Стоит это значение смотреть в какой-то отдельной переменной. Цикловые переменные шанс корректно увидеть - это 1/2 или 2/3. Цитата Ссылка на комментарий
Вопрос
dim
блин, что делаю не так (под андроид)
var iio:integer;
begin
rz:=High(CartList);// возвращает 0 хотя есть 1 запись в массиве
for iio := 0 to rz do begin
// цикл не выполняется так как iio=1 в отладчике
end;
Изменено пользователем dimуже всю голову сломал подскажите что не так
Ссылка на комментарий
15 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.