Как проверить переменные на занятость?

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Куку.
Есть проект с кучей переменных, которые задаются из конфига, как проверить все ли переменные заполнены?
А если есть хоть одна переменная пустая, то выйти по ошибке и указать в ошибке какая переменная пустая

к примеру переменные
var1, var2 ......, var32

спасибо
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
к примеру переменные
var1, var2 ......, var32
Если в названии переменных меняется только номер, а все остальное одинаковое, то можно решить так:
C#:
for (int i=1; i<=32; i++){
    if (string.IsNullOrWhiteSpace(project.Variables["var"+i].Value))
        throw new Exception(string.Format("Пустая переменная var{0}", i));
}
return "Все переменные заполнены";
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Если в названии переменных меняется только номер
названия для примера дал что мол их много.
они конечно же называются все по разному )) сорян что ввел в заблуждение
сниппет для перечисления каждой переменной лучше подойдет
спасибо
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
Куку.
Есть проект с кучей переменных, которые задаются из конфига, как проверить все ли переменные заполнены?
А если есть хоть одна переменная пустая, то выйти по ошибке и указать в ошибке какая переменная пустая

к примеру переменные
var1, var2 ......, var32

спасибо

наверное, как то так ....

C#:
var tmp = new List<string>();

foreach (var key in project.Variables.Keys)
    if (string.IsNullOrEmpty(project.Variables[key].Value)) tmp.Add(project.Variables[key].Name);
if (tmp.Count > 0 ) throw new Exception(string.Format("Присутствуют пустые переменные: [ {0} ]", string.Join(",", tmp)));
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
они конечно же называются все по разному )) сорян что ввел в заблуждение
сниппет для перечисления каждой переменной лучше подойдет
C#:
var e = new List<string>();
string[] vars = { "var1", "var2", "var3", "var4", "var5" }; // имена переменных, которые нужно проверить на пустоту

foreach (string key in project.Variables.Keys)
    if (vars.Any(k => k == key))
        if (string.IsNullOrWhiteSpace(project.Variables[key].Value))
            e.Add(key);

if (e.Count>0) {
    project.SendToLog(string.Format("Обнаружены пустые переменные {0}",
        string.Join(", ", e)), "",
        ZennoLab.InterfacesLibrary.Enums.Log.LogType.Error, true, ZennoLab.InterfacesLibrary.Enums.Log.LogColor.Red);
    return null;
}
87667
 
  • Спасибо
Реакции: backoff

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
@ibred спасибо, то что надо, с выводом в лог. Спасибо
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
Если заполнено то все ок. если нет, вписал одну переменную выдает такой ответ
Посмотреть вложение 87668
@ibred спасибо, то что надо, с выводом в лог. Спасибо
код один и тот же по-сути, что у тебя там не работает ? :D
 

Вложения

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
по сути или один и тот же? )
я вижу разный код, с частью взятия от твоего
мне собственно все равно что и как, главное работает и ок
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
алгоритм проверки переменных на пустоту - один и тот же,
поэтому, ну никак у тебя не может работать его код, при этом не работать мой:
А если есть хоть одна переменная пустая, то выйти по ошибке и указать в ошибке какая переменная пустая
вписал одну переменную выдает такой ответ
Посмотреть вложение 87668
все правильно, вписал только 1 переменную, значит остальные 30 - пустые, о чем тебе лог и говорит...
что тут может не работать :D
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
лол кек чебурек
я реально не понимаю предмет продолжения диалога с твоей стороны
твой код работает, но не совсем правильно, то есть если будет 2-3 переменные и одна пустая, то он выдаст правильно, но если пустая первая переменная в списке, то выдает такую портянку... от куда она я не понимаю.
30 переменных я написал условно, их будет больше по итогу, и что потом делать

у бреда код заработал сразу, без бубнов и как надо
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
мое условие на вход в ошибку: if (tmp.Count > 0 )
условие ibred на вход в ошибку : if (e.Count>0)


я реально не понимаю предмет продолжения диалога с твоей стороны
действительно, на кой время свое трачу ...
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
мое условие на вход в ошибку: if (tmp.Count > 0 )
условие ibred на вход в ошибку : if (e.Count>0)



действительно, на кой время свое трачу ...
Код хороший, но не то, чел написал много переменных, но не все, а тут все проверяет, а нужно конкретные переменные, но не все, понимаешь, и вообще о чем спор)
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
хех, интересно получается )))
я же писал что не прогер )

после видоса все встало на свои места, я в место
project.Variables[key].Value)) tmp.Add(project.Variables[key].Name
подставлял названия переменных )))
вот и найдена причина.

ну и да, не все переменные нужно проверять есть 50, проверить нужно 30, определенные

не держи зла в общем, и спасибо за помощь
кстати подписан на твой канал, как оказалось ))
 

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