|
OFF: Что скажете про такой кусок кода? | ☑ | ||
---|---|---|---|---|
0
poi
10.08.13
✎
16:15
|
...
Пока Истина Цикл ... Если что-то Тогда Прервать; КонецЕсли; ... КонецЦикла; ... |
|||
1
Aleksey
10.08.13
✎
16:16
|
код как код
|
|||
2
Gantosha
10.08.13
✎
16:28
|
гениально ...
человек не хотел что бы праздник прекращался ) |
|||
3
КонецЦикла
10.08.13
✎
16:35
|
С какой целью интересуетесь?
|
|||
4
Фокусник
10.08.13
✎
16:35
|
ИМХО, аналог Перейти. Иногда имеет право на существование :)
|
|||
5
Aleksey
10.08.13
✎
16:46
|
(2) Цикл то конечный, зацикливания нет
(4) А причем тут перейти? Например опрашиваем какое-то устройство, если оно не готово опрашиваем еше раз |
|||
6
megabax
10.08.13
✎
16:53
|
Нормальный код. Не всегда удобно все условия в "пока" всовывать
|
|||
7
Фокусник
10.08.13
✎
16:57
|
(5) "А причем тут перейти? "
При том, что перейти похоже действует, тоже безусловный переход, как и у
;) |
|||
8
Поросенок Петр
10.08.13
✎
17:01
|
Ни разу в разумной жизни не пришлось к такому прибегнуть.
Значит г***код. |
|||
9
Aleksey
10.08.13
✎
17:09
|
(8) вопросов нет , осталось убедить писателей типовых - что их код г***код, потому что какой то поросёнок ни разу в жизни так не писал
БП 2.0 Пока Истина Цикл - найдено 840 первый же пример Если ИспользоватьСобытияПриФормированииОтчета Тогда //Основной цикл вывода отчета Пока Истина Цикл //Получим следующий элемент результата компоновки ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультата = Неопределено Тогда //Следующий элемент не получен - заканчиваем цикл вывода Прервать; Иначе Отказ = Ложь; Попытка ОтчетОбъект.ПередВыводомЭлементаРезультата(МакетКомпоновки, ДанныеРасшифровки, ЭлементРезультата, Отказ); Исключение КонецПопытки; Если Не Отказ Тогда //Элемент получен - выведем его при помощи процессора вывода ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); КонецЕсли; КонецЕсли; КонецЦикла; //Завершение вывода отчета ПроцессорВывода.ЗакончитьВывод(); Иначе ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); КонецЕсли; |
|||
10
Aleksey
10.08.13
✎
17:10
|
Это из ОМ КонтролируемыеСделки Процедура ВывестиОтчет
|
|||
11
Aleksey
10.08.13
✎
17:11
|
или
Функция ЗаменитьНедопустимыеСимволыXML(Знач Текст, СимволЗамены = " ") Экспорт #Если НЕ ВебКлиент Тогда ПозицияНачала = 1; Пока Истина Цикл Позиция = НайтиНедопустимыеСимволыXML(Текст, ПозицияНачала); Если Позиция = 0 Тогда Прервать; КонецЕсли; Если Позиция > 1 Тогда НедопустимыйСимвол = Сред(Текст, Позиция - 1, 1); Если НайтиНедопустимыеСимволыXML(НедопустимыйСимвол) > 0 Тогда Текст = СтрЗаменить(Текст, НедопустимыйСимвол, СимволЗамены); КонецЕсли; КонецЕсли; НедопустимыйСимвол = Сред(Текст, Позиция, 1); Если НайтиНедопустимыеСимволыXML(НедопустимыйСимвол) > 0 Тогда Текст = СтрЗаменить(Текст, НедопустимыйСимвол, СимволЗамены); КонецЕсли; ПозицияНачала = Позиция + 1; КонецЦикла; #КонецЕсли Возврат Текст; КонецФункции |
|||
12
Aleksey
10.08.13
✎
17:12
|
или в обмене данными
Пока Истина Цикл Индекс = МассивУзлов.Найти(НаборЗаписей.ОбменДанными.Отправитель); Если Индекс = Неопределено Тогда Прервать; КонецЕсли; МассивУзлов.Удалить(Индекс); КонецЦикла; |
|||
13
Wasya
10.08.13
✎
17:20
|
Ну нет в 1С конструкции
repeat until |
|||
14
Сияющий Асинхраль
10.08.13
✎
17:22
|
Использую такой код, например, при чтении эксель файла
|
|||
15
КонецЦикла
10.08.13
✎
17:26
|
(14) А я писал
Пока КонецФайла <> 1 Цикл ... ...тут где-то КонецФайла = 1 |
|||
16
Сияющий Асинхраль
10.08.13
✎
17:40
|
Можно и так, но как правило условия выхода из такого цикла сложне одного простого условия, а изредка условий несколько, не люблю внутри пока сложные условия, прервать зачастую проще читается
|
|||
17
Сияющий Асинхраль
10.08.13
✎
17:40
|
(15) Можно и так, но как правило условия выхода из такого цикла сложне одного простого условия, а изредка условий несколько, не люблю внутри пока сложные условия, прервать зачастую проще читается
|
|||
18
Эмбеддер
10.08.13
✎
18:07
|
(0) а что скажете насчет такой конструкции в Си?
for(;;) |
|||
19
Принт
10.08.13
✎
18:33
|
(0) Код как код, только ты почему-то грустишь..
|
|||
20
NS
10.08.13
✎
20:05
|
(8) Во многих языках специально добавлен оператор бесконечного цикла.
|
|||
21
Aleksey
10.08.13
✎
20:08
|
||||
22
Sserj
10.08.13
✎
20:19
|
(15) Неоптимально, лишняя память на лишнюю переменную расходуется :)
|
|||
23
bolder
10.08.13
✎
20:42
|
(0) Прикажешь отменить бесконечные циклы?)))
И вместе с ними все ОС реального режима?))))) |
|||
24
Злопчинский
10.08.13
✎
20:46
|
||||
25
Злопчинский
10.08.13
✎
20:46
|
||||
26
Волчара2010
10.08.13
✎
20:59
|
В УНф такой код встречаетcя
|
|||
27
Поросенок Петр
10.08.13
✎
21:05
|
(9) Отличный пример г-кода. Про попытку умолчу, код и без неё "блястящ". Если мыслить не сущностями, а строками, бесконечные циклы и гото вполне здравые вещи.
P/S Люди. Типовые пишут обычные люди. Кто пишет хорошо, а кто и лютого качества п-ц. |
|||
28
jarett
10.08.13
✎
21:06
|
(15) *А я писал
Пока Конец* Мы знаем что ты Конец :))) Уже много лет. Но любим мы тебя не за это :))) |
|||
29
Широкий
10.08.13
✎
21:11
|
нормальный код
|
|||
30
DS
10.08.13
✎
22:05
|
Код как код. Совершенно непонятна критика. Наверное в мозгах критиканов что-то не то...
|
|||
31
Torquader
10.08.13
✎
23:29
|
Ну и что вам не нравится.
Если создатели 1С не подумали о циклах с условием в конце (Например Do ... Loop While Condition=True) то приходится частенько писать цикл с условием в истину. А в восьмой версии, к тому же, весь перебор превратили в функции, возвращающие значения. Но 1С не поддерживает вложенных выражений, то есть нельзя написать While(Null!=(Result=Object.RequestNextData)) - приходится сначала получать значение в переменную, а потом его сравнивать с НЕОПРЕДЕЛЕНО. Хотя, конечно, можно написать функцию-заглушку,которая копирует один параметр в другой и проверяет его на равенство НЕОПРЕДЕЛЕНО, но такой подход ясности коду не добавит. |
|||
32
sirsp
11.08.13
✎
00:10
|
(0) Только одно: криво отформатирован!
|
|||
33
YV
11.08.13
✎
02:37
|
(0) Вполне себе нормальный код. DO ... WHILE можно реализовать таким вот образом.
|
|||
34
Вуглускр1991
11.08.13
✎
10:01
|
Только если в теле цикла используются вызовы к функциям в реализации которых в ожидании вывода останавливаются потоки,
либо если мы не ждем асинхронного события, а перебираем варианты, один из которых гарантированно прервет цикл. Если не так - то код опасен. И я бы спросил автора на этот счет, прежде чем принимать у него работу. |
|||
35
SalavatUlaev
11.08.13
✎
10:10
|
(0) Ужас. он же не должен работать
Разве эти строки "..." не вызывают ошибки ? |
|||
36
VladRd
11.08.13
✎
10:24
|
В семерке писали:
Пока 1=1 Цикл И ничего... |
|||
37
2S
11.08.13
✎
10:33
|
код стар как я, открыл Америку блеат
|
|||
38
Classic
11.08.13
✎
10:42
|
нормальный код.
В Пока Условие() Цикл КонецЦикла тоже можно постоянное условие втулить и получить бесконечный цикл А конструкция из (0) - некий аналог паскалевского repeat until Т.е. железного выполнения хотя бы раз |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |