Неубиваемый цикл C#

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 327
Благодарностей
5 429
Баллы
113
Шаб клинул не туда случайно, после чего проект не мог завершиться, я так предполагаю, что цикл в шарпе. Тут наверно нужно BREAK Прописать, но куда?

В данном коде конструкция url2 != "" выдала отрицательный результат, т.е. поле url2 было пустым.
Код:
var List1 = project.Lists["ВЫХОД"];
var url2 = project.Variables["Variable7"].Value;
while(true)
{
lock(SyncObjects.ListSyncer)
{
    if (url2 != "")
    {
    List1.Add(url2);
        return "Ok";
    }
}
}
 

Sz5

Client
Регистрация
10.12.2012
Сообщения
157
Благодарностей
186
Баллы
43
На 12 строке
else
return "fail";
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 327
Благодарностей
5 429
Баллы
113
На 12 строке
else
return "fail";
так?
Код:
var List1 = project.Lists["ВЫХОД"];
var url2 = project.Variables["Variable7"].Value;
while(true)
{
lock(SyncObjects.ListSyncer)
{
    if (url2 != "")
    {
    List1.Add(url2);
        return "Ok";
    }
else
return "fail";
}
}
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
а на кой черт там вообще цикл? В цикле ничего не меняется, не увеличивается, не уменьшается, не берется что-то новое. Зачем он?
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 327
Благодарностей
5 429
Баллы
113
а на кой черт там вообще цикл? В цикле ничего не меняется, не увеличивается, не уменьшается, не берется что-то новое. Зачем он?
хз, исправь если шаришь.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Код:
var List1 = project.Lists["ВЫХОД"];
var url2 = project.Variables["Variable7"].Value;

lock(SyncObjects.ListSyncer)
{
    if (url2 != "")
    {
    List1.Add(url2);
        return "Okkk";
    }
}
 
  • Спасибо
Реакции: Mikhail B.

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 327
Благодарностей
5 429
Баллы
113
Код:
var List1 = project.Lists["ВЫХОД"];
var url2 = project.Variables["Variable7"].Value;

lock(SyncObjects.ListSyncer)
{
    if (url2 != "")
    {
    List1.Add(url2);
        return "Okkk";
    }
}
Благодарю, просто за основу я брал другой код, я пока не могу с нуля писать, списываю с других.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
Тема старая, но плодить новую не охота.
Вообщем туплю немного.
Задача: генерить рендомное число. Проверять наличие его в списке, если есть такое в списке, то снова генерить пока не сгенерим то число, которого в списке нет.

Мой код чего то не работает.
Код:
var rnd = new Random();
// берем из переменной текст, который надо искать
var proverka = "0";
var otvet = "yes";
//var proverka = proverka.ToString();
// получаем список, в котором будем искать
var bili = project.Lists["n_link"];

while (otvet == "yes"){
    proverka = (rnd.Next(5, 10)).ToString();
    // ищем в каждой строчке в списке
    lock(SyncObjects.ListSyncer)
    {
        for(int i=0; i < bili.Count; i++)
        {
            // читаем строку из списка
            var str = bili[i];
            // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
            if (str == proverka)      
            {
                otvet = "yes";
            }
            else {
                otvet = "no";
            }
        }
    }
// если ничего не нашли возвращаем "no"

}
return proverka;
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Тема старая, но плодить новую не охота.
Вообщем туплю немного.
Задача: генерить рендомное число. Проверять наличие его в списке, если есть такое в списке, то снова генерить пока не сгенерим то число, которого в списке нет.

Мой код чего то не работает.
Код:
var rnd = new Random();
// берем из переменной текст, который надо искать
var proverka = "0";
var otvet = "yes";
//var proverka = proverka.ToString();
// получаем список, в котором будем искать
var bili = project.Lists["n_link"];

while (otvet == "yes"){
    proverka = (rnd.Next(5, 10)).ToString();
    // ищем в каждой строчке в списке
    lock(SyncObjects.ListSyncer)
    {
        for(int i=0; i < bili.Count; i++)
        {
            // читаем строку из списка
            var str = bili[i];
            // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
            if (str == proverka)     
            {
                otvet = "yes";
            }
            else {
                otvet = "no";
            }
        }
    }
// если ничего не нашли возвращаем "no"

}
return proverka;
твой код работает так, как ты описал. Если он "не работает" не по причине вылета ошибки - значит хочешь от него ты чего-то другого
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
твой код работает так, как ты описал. Если он "не работает" не по причине вылета ошибки - значит хочешь от него ты чего-то другого
да в том то и дело что без ошибок, но выходит например с числом 6 - а в списке есть такое. По идеи всегда должен выходить с числом кроме 6
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
да в том то и дело что без ошибок, но выходит например с числом 6 - а в списке есть такое. По идеи всегда должен выходить с числом кроме 6
добавь после строки
otvet = "yes";
строку
break;
 
  • Спасибо
Реакции: luk911

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
C#:
int index = 0;

var bili = project.Lists["n_link"];

while (true)
{
    if (Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode) return null;
    if (((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) return null;

    index = Global.Classes.rnd.Next(5, 10);
    if (bili.Any(s=>s.Contains(index.ToString())))
    {
        break;
    }
}

return index;
2019-05-16_233456.png
 
  • Спасибо
Реакции: Dorian_Gray

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Очень крутая конструкция :-) но делает все наоборот. Генерит только то что уже есть в списке. А мне то надо было.
так выстави сам значения какие тебе надо генерить он и сгенерит и будет их искать
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
ты просто хотишь нас посчитать что мы тут такие тупые и не понимаем для чего генерация чисел

первое сразу номер телефона
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
C#:
int index = 0;
    if (Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode) return null;
    if (((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) return null;
[ATTACH=full]38693[/ATTACH][/INDENT]
[/QUOTE]

Не могли бы вы пояснить, что делают эти две строчки.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
while по сути вечный цикл, эти две строки тебя спасут, ты сможешь в любое время прервать щаблон
 
  • Спасибо
Реакции: luk911

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
ты просто хотишь нас посчитать что мы тут такие тупые и не понимаем для чего генерация чисел

первое сразу номер телефона
к сожалению ваш код работает наоборот. Еще раз обращаю ваше внимание на это. Добавьте в список всего одно число, и ваш код всегда будет генерить только это число. А нужно генерить то число, которого в списке нет. Никого глупым тут не считаю. Просто проверил ваш вариант.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
к сожалению ваш код работает наоборот. Еще раз обращаю ваше внимание на это. Добавьте в список всего одно число, и ваш код всегда будет генерить только это число. А нужно генерить то число, которого в списке нет. Никого глупым тут не считаю. Просто проверил ваш вариант.
ну добавлю, сгенерю, с каким хреном ) его прочверять тогда ?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Задача: генерить рендомное число. Проверять наличие его в списке
ты сам пишешь одно, а сейчас говоришь бред какой то, а могу сказать почему, потому что тебе надо больше а ты все секреты типо не хотишь выкладывать
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
ты сам пишешь одно, а сейчас говоришь бред какой то, а могу сказать почему, потому что тебе надо больше а ты все секреты типо не хотишь выкладывать
невнимательность, самая большая беда программиста :-) Чего ж вы не дочитали то условие задачи.

Задача: генерить рендомное число. Проверять наличие его в списке, если есть такое в списке, то снова генерить пока не сгенерим то число, которого в списке нет.

вот так стояла задача с самого начала :-) Да и какие секреты, о чем вы :-) все описанно. просто дочитать надо было. Так что буду признателен за правильную конструкци. Моя работает. Доку спасибо, поправил. Но ваш стиль и локоничность мне нравится.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
когда сгенерится число которого нет что нужно делать ? об этом не написано, генерить их вечно ?
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
когда сгенерится число которого нет что нужно делать ? об этом не написано, генерить их вечно ?
выйти из цикла. и вернуть это число. Я знаю что вайл опасен, в данном случае подходит. За ваши предохранители спасибо.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
чтобы не вытягивать по слову, как из многих которые просят помощи, пишите сразу всё что надо
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
C#:
int index = 0;

var bili = project.Lists["n_link"];

while (true)
{
    if (Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode) return null;
    if (((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) return null;

    index = Global.Classes.rnd.Next(5, 10);
    if (bili.Any(s=>s.Contains(index.ToString())))
    {
        break;
    }
}

return index;
Посмотреть вложение 38693
if (bili.Any(s=>s.Contains(index.ToString())))
Во-первых, тут не хватает знака восклицания
Во-вторых, эта конструкция всё равно перемудрена и если на диапазоне 5-10 она ещё будет работать, то на более широких диапазонах - нет
 
  • Спасибо
Реакции: luk911

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
if (bili.Any(s=>s.Contains(index.ToString())))
Во-первых, тут не хватает знака восклицания
Во-вторых, эта конструкция всё равно перемудрена и если на диапазоне 5-10 она ещё будет работать, то на более широких диапазонах - нет
что человек пишет, то и получает, мне что за него голову на будущее ломать ?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)