|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
||||||
Почему не выполняется вложенный цикл for?24.05.2017, 21:48. Показов 5785. Ответов 18
Метки нет (Все метки)
Всем привет,
подскажите почему у меня не заходит внутрь второго цикла For ? Смысл такой - у меня есть массив arrData и мне нужно пробежаться по нему по строкам и по столбцам
0
|
||||||
| 24.05.2017, 21:48 | |
|
Ответы с готовыми решениями:
18
Почему если условие входа в цикл не выполняется, функция заново входит в цикл
Почему while не прекращает вложенный цикл? |
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
|
| 24.05.2017, 22:12 | |
|
в этом куске кода все правильно, если конечно TotalRows >2, иначе вообще в цикл входа не будет
0
|
|
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
||||||
| 24.05.2017, 22:20 [ТС] | ||||||
|
Вот и я так думал, но цикл доходит до этой строки
for (int iCol = 2; iCol <= 4; iCol++) //по столбцам по нему проходится 3 раза и возвращается в строку выше for (int iRow = 2; iRow <= TotalRows; iRow++) //по строкам TotalRows = 81 вот весь код
0
|
||||||
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
|
| 24.05.2017, 22:35 | |
|
похожее поведение встречал, если напутать со скобками(фигурными), когда компилятор считает что то, что в скобках после for сам по себе блок(и for как бы пустой), и не относится к for... так то все вроде правильно, как минимум заходить должен
0
|
|
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
||||||
| 24.05.2017, 22:39 [ТС] | ||||||
|
выше есть только 1 фигурная скобка у
что делать... не понятно (((
0
|
||||||
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
|
| 25.05.2017, 00:14 | |
|
попробуй для теста убить внутренности 2го фора, заменив на mbox.show(), например, просто что б удостовериться, что заход есть...прям чудеса какие-то...перезагрузись что-ли
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 25.05.2017, 01:24 | ||
|
Одно дело — выполнение на заходит; и совсем другое — выполнение заходит, но эффект не соответствует ожиданиям.
0
|
||
|
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,405
|
|
| 25.05.2017, 07:30 | |
|
Во вторую очередь, было бы неплохо научиться пользоваться отладчиком. Тогда можно не только узнать "заходит""не заходит", но посмотрев на содержимое переменных\полей, понять почему.
0
|
|
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
|
| 25.05.2017, 10:15 [ТС] | |
|
Проверяю просто - ставлю точку останова на строке
if (dbConn.State != ConnectionState.Open) dbConn.Open(); а далее нажимаю много раз кнопку F11 отладчик доходит до строки for (int iCol = 2; iCol <= 4; iCol++) //по столбцам потом по ней делает шаги 3 раза по iCol++ (т.е. внутри этой строки) и возвращается на строку выше for (int iRow = 2; iRow <= TotalRows; iRow++) //по строкам по F11 - не проваливается ниже (не заходит внутрь второго цикла)
0
|
|
|
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,405
|
|
| 25.05.2017, 10:18 | |
|
Pavel55, ну так вы смотрите на содержимое переменных и вам сразу всё станет ясно...
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 25.05.2017, 10:26 | |
|
Pavel55, сможете скопировать сюда нерабочий код?
Без добавления коментариев и вообще какого-либо изменения, просто взять только что проверенный неработающий код и скопировать его.
0
|
|
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
|
| 25.05.2017, 10:28 [ТС] | |
|
Я сейчас закоментировал второй цикл по столбцам и получаю вот это - см. фотку
0
|
|
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
||||||
| 25.05.2017, 10:34 [ТС] | ||||||
|
Вот код.
0
|
||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 25.05.2017, 10:37 | ||
|
Попробуйте сделать следующее: 1. Закройте студию 2. Из папки проекта удалите папки bin и obj 3. Запустите студию, перестройте проект и снова попробуйте пошаговую отладку.
0
|
||
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
|||||||||||
| 25.05.2017, 13:38 [ТС] | |||||||||||
|
kolorotur, да, видно какой-то глюк. Сейчас попробую.
Для проверки сделал вот так. Всё работает идеально
К сожалению, удаление папок bin и obj ничего не дало. Но удалось локализовать проблему. Может кто подскажет, что я делаю не так Код не работает из-за строки TextToSearch = arrData[iRow, iCol].ToString().Trim(); что в ней не так? arrData - двумерный массив данных с Excel листа. Данные в нём есть. Получаю их так var arrData = (object[,])xlSht.Range["A1:E" + iLastRow].Value; arrData.GetUpperBound(0) - даёт число 80. вот этот код не работает.
0
|
|||||||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 25.05.2017, 13:48 | ||
|
Данное исключение вылетает из-за того, что либо элемент arrData[iRow, iCol] не инициализирован (null), либо метод ToString возвращает null.
1
|
||
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
||
| 25.05.2017, 14:13 [ТС] | ||
|
kolorotur,
var arrData = (object[,])xlSht.Range["A1:E" + iLastRow].Value; то пустые ячейки имеют в массиве значение null. Видно из-за этого и не работает второй цикл. Только компилятор указывает не на строку TextToSearch = arrData[iRow, iCol].ToString().Trim(); а жёлтым указывает на второй цикл и пишет "Ссылка на объект не указывает на экземпляр объекта" А как мне тогда обратится ко всем элементам массива в цикле, если некоторые элементы этого двумерного массива имеют значение null ? P.S. Не хотелось бы (и считаю неправильным) писать ненужную информацию в Excel файл, нужно как-то в коде обойти это
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 25.05.2017, 14:33 | |
|
0
|
|
|
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
|
|
| 25.05.2017, 14:36 [ТС] | |
|
Да, спасибо.
if (arrData[iRow, iCol] != null) помогло
0
|
|
| 25.05.2017, 14:36 | |
|
Помогаю со студенческими работами здесь
19
Почему не выполняется цикл? Почему цикл не выполняется? Почему не выполняется цикл? Почему цикл for выполняется 2 раза?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|