|
v7: Непонятное поведение кода при отладке | ☑ | ||
---|---|---|---|---|
0
mpbakunov
16.09.11
✎
16:31
|
Доброго дня!
вот есть такой незамысловатый код: |
|||
1
andrewks
16.09.11
✎
16:31
|
действительно, незамысловатый...
|
|||
2
mpbakunov
16.09.11
✎
16:32
|
ТЗ.выбратьСтроки();
Пока (ТЗ.ПолучитьСтроку()=1) ИЛИ (к=ТЗ.КоличествоСтрок()) Цикл ... Конеццикла при запусе бработки ТЗ.ПолучитьСтроку()=1, а при отладке при первой же итерации ТЗ.ПолучитьСтроку()=0!!! Не могу понять в чем подвох. Есть идеи? |
|||
3
Попытка1С
16.09.11
✎
16:33
|
(1) гыгы +1
|
|||
4
Vladal
16.09.11
✎
16:33
|
Пока ... ИЛИ ?????
|
|||
5
Vladal
16.09.11
✎
16:33
|
а.. ну да..
|
|||
6
Rie
16.09.11
✎
16:34
|
(2) Как смотришь? :-)
|
|||
7
Vladal
16.09.11
✎
16:35
|
Второе условие после ИЛИ зачем?
Или в цикле играешься с количеством строк? |
|||
8
mpbakunov
16.09.11
✎
16:36
|
(6) в циклле первой строчкой написал Сообщить("ОК") и при запуске вижу что вход в цикл происходит, а при отладке ставлю точку останова на Пока... и в цикл не захожу, проверяю ТЗ.ПолучитьСтроку()=0, хотя количество строк >0
|
|||
9
mpbakunov
16.09.11
✎
16:37
|
(7) можно и без ИЛИ (мне это условие прсо надо) все тоже самое происходит
|
|||
10
Rie
16.09.11
✎
16:38
|
(9) Проверяешь отладчиком? Вот и считал следующую строку. Ещё раз проверил - ещё одну строку "потерял".
|
|||
11
mpbakunov
16.09.11
✎
16:41
|
(10) да я просто при остановке шагаю по F10 и сразу выхожу из цикла не входя в него. Первый раз такое наблюдаю
|
|||
12
Rie
16.09.11
✎
16:43
|
(11) А почему ты уверен, что в таблице есть строки?
|
|||
13
mpbakunov
16.09.11
✎
16:44
|
(12) я их вижу :) и свойство количествострок >0
|
|||
14
Darych
16.09.11
✎
16:45
|
небось к=0
|
|||
15
Rie
16.09.11
✎
16:46
|
(13) Видишь - это хорошо. Но где видишь? Может быть, у тебя есть ТЗ на форме и отдельно ТЗ - переменная?
|
|||
16
Darych
16.09.11
✎
16:46
|
тбьху пятницца... туплю
|
|||
17
МастерВопросов
16.09.11
✎
16:47
|
(13) выкладывай уже весь код, который внутри цикла
|
|||
18
andrewks
16.09.11
✎
16:48
|
(17) не, надо _угадать_
|
|||
19
МастерВопросов
16.09.11
✎
16:50
|
(18) ннну например:
ТЗ.выбратьСтроки(); Пока (ТЗ.ПолучитьСтроку()=1) ИЛИ (к=ТЗ.КоличествоСтрок()) Цикл Сообщить("ОК"); Тз=СоздатьОбъект("ТаблицаЗначений"); Конеццикла |
|||
20
Rie
16.09.11
✎
16:51
|
(19) Мимо. По утверждению ТС, в цикл он вообще не входит ((11)).
|
|||
21
Vladal
16.09.11
✎
16:52
|
(19) Угу... вот тебе и ноль строк... ТЗ реинициализируется и ноль строк.
Хотя в первй раз войти должно |
|||
22
МастерВопросов
16.09.11
✎
16:54
|
(20) ну первый раз то в (8) у него получилось зайти, а потому уже нет
|
|||
23
andrewks
16.09.11
✎
16:55
|
интересно, а что будет, если в табло запихать
ТЗ.ПолучитьСтроку() и шагать по строчкам кода в отладчике? |
|||
24
МастерВопросов
16.09.11
✎
16:56
|
еще вариант, попроще:
ТЗ.выбратьСтроки(); Пока (ТЗ.ПолучитьСтроку()=1) ИЛИ (к=ТЗ.КоличествоСтрок()) Цикл Сообщить("ОК"); Тз=к; Конеццикла |
|||
25
МастерВопросов
16.09.11
✎
16:57
|
(23) гы, да это вариант поизвращенней :-)
|
|||
26
Rie
16.09.11
✎
16:58
|
(21) Можно не реинициализировать, а просто выборку сбить.
|
|||
27
Darych
16.09.11
✎
17:00
|
(26) как вариант добавлением строки в цикле
|
|||
28
МастерВопросов
16.09.11
✎
17:01
|
(26) правильный ответ уже назвали в (23)
автор в табло выполянет ТЗ.ПолучитьСтроку(), естветсвенно у него выборка перепрыгивает на следующую строку, которой видимо уже нет, поэтому "ТЗ.ПолучитьСтроку()=0" см.(2) |
|||
29
mpbakunov
19.09.11
✎
09:53
|
ТЗ у меня не переменная а элемент управления на форме. количество строк около 10000. без отладчика цикл отрабатывает, при отладке нет!
|
|||
30
Ёпрст
19.09.11
✎
09:56
|
(29) дурила, выкинь весь код из окна табло в отладчике.
поставь точку останова унутри цикла и шагай. |
|||
31
ЧеловекДуши
19.09.11
✎
09:57
|
(0) Убери эту строчку "(к=ТЗ.КоличествоСтрок())"
Писать лучше так... Сч=1; Пока Сч <= ТЗ.КоличествоСтрок() Цикл ....// тут чистое шаманство Сч = Сч + 1; Конеццикла; При этом такой цикл работает гораздо быстрее, нежели через выбрать ;) |
|||
32
mpbakunov
19.09.11
✎
10:04
|
(30) давай без эмоций дурных! толку мало от остановке внутри цикла. Да, точка останова сработала, но при прохождении цикла как только я выхожу на проверку условия цикла сразу же выхожу из него , т.е дебагом прохожу только одну итерацию цикла.
|
|||
33
1Сергей
19.09.11
✎
10:06
|
(32) ещё раз. ТАБЛО ОЧИСТИ!
|
|||
34
mpbakunov
19.09.11
✎
10:11
|
(33) Спасибо друг! помогло. Честно первый раз с эти столкнулся. Но не совсем пойму как табло влияло на отладку?
|
|||
35
mpbakunov
19.09.11
✎
10:12
|
подозреваю что у меня в табло я просматривал ТЗ.Количество строк() и из за того курсор внутри выборки устанавливался в конец выборки. я прав?
|
|||
36
1Сергей
19.09.11
✎
10:14
|
(35) нет, там было скорее всего ТЗ.ПолучитьСтроку()
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |