powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / CommandLine parser?
96 сообщений из 96, показаны все 4 страниц
CommandLine parser?
    #39738455
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Порекомендуйте что-то простое и приличное
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738465
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Split
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738472
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738476
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProSplit

Зачем, если в Main передаётся string[] args ?

for + switch + case
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738480
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kПорекомендуйте что-то простое и приличноепервый раз берем входные и сразу библиотеку?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738484
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAfor + switch + case

А если логика аргументов допускает произвольный порядок их указания (myprogram.exe /foo /bar == myprogram.exe /bar /foo)?
Если серьезно - гугл в помощь: https://www.google.com/search?q=c# command line parser - готовых библиотек для парсинга этих аргументов ком. строки, как грязи.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738488
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныskyANAfor + switch + case

А если логика аргументов допускает произвольный порядок их указания (myprogram.exe /foo /bar == myprogram.exe /bar /foo)?
Если серьезно - гугл в помощь: https://www.google.com/search?q=c# command line parser - готовых библиотек для парсинга этих аргументов ком. строки, как грязи.

1. йез
2. потому и спросил, чтобы что-то проверенное порекомендовали
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738681
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны вполне прилично

а на шарпе этого же нет?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738689
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныА если логика аргументов допускает произвольный порядок их указания (myprogram.exe /foo /bar == myprogram.exe /bar /foo)?
Если не усложнять, то порядок причем?
Надо все параметры по разделителю в словарь и отправить словарь в бизнес логику выполнять.
Если параметр a.exe --file myFile.xml, то этот файл и поступит в метод обработки.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738707
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныskyANAfor + switch + case

А если логика аргументов допускает произвольный порядок их указания (myprogram.exe /foo /bar == myprogram.exe /bar /foo)?
Если серьезно - гугл в помощь: https://www.google.com/search?q=c# command line parser - готовых библиотек для парсинга этих аргументов ком. строки, как грязи.

На самом деле, простейший конечный автомат. Я всегда за то, чтобы использовать готовое, но тут, походу, быстрее самому написать, чем в готовом разбираться (не считая, что это готовое надо еще сначала выбрать из этого "как грязи").
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738715
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Как всегда в точку.
Автор туману напускает, а у самого Вангуем один параметр.
Кроме того, если встретится 2 или неформат, то сразу выход и справка в out "как надо".
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738792
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныskyANAfor + switch + case

А если логика аргументов допускает произвольный порядок их указания (myprogram.exe /foo /bar == myprogram.exe /bar /foo)?
И что?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
            for (int i = 0; i < args.Length; i++)
            {
                string arg = args[i];

                try
                {
                    if (arg != null)
                    {
                        switch (arg)
                        {
                            case "/bar":
                                Console.WriteLine("/bar parameter is presented");
                                break;
                            case "/foo":
                                Console.WriteLine("/foo parameter is presented");
                                break;
                            case "/name":
                                Console.WriteLine("/name parameter is set to: {0}", args[i + 1]);
                                break;
                        }
                    }
                }
                catch (FormatException)
                {
                    throw new ArgumentException("Input parameter is not in a correct format.", arg);
                }
                catch (IndexOutOfRangeException)
                {
                    throw new ArgumentNullException(arg, "Required input parameter is missing.");
                }
            }
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738849
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется

skyANA
Код: c#
1.
Console.WriteLine("/name parameter is set to: {0}", args[i + 1]);




тут надо заменить на

Код: c#
1.
Console.WriteLine("/name parameter is set to: {0}", args[++i]);
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738873
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Немного офф - а это работает? Недавно натыкался на вопрос switch по строкам, там утверждали что возможно, только ести длина строки одинакова, и предлагали Substring(1,3)
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738895
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ что?
Да нет, ничего, я, чесслово, не против, если случай настолько простой, что это будет работать. В моем случае в свое время было несколько сложнее - ключи со значениями, контекстно-зависимые ключи, сокращенные формы ключей, итп. - пришлось велосипедить что-то вроде того, что выше по ссылке на F#.
iskatelsqlskyANA,
Немного офф - а это работает? Недавно натыкался на вопрос switch по строкам, там утверждали что возможно, только ести длина строки одинакова, и предлагали Substring(1,3)
Если у строк разная длина - то это разные строки, ваш К.О. Разумеется, в этом случае switch по строкам работать не будет, т.к. он фактически сводится к вызову перегруженного оператора ==, который, в свою очередь, вызывает String.Equals(a, b). Здесь, кстати, еще будет нужно, чтобы у строк совпадал регистр.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738931
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlтам утверждали что возможно, только ести длина строки одинакова, и предлагали Substring(1,3)

Что это за ересь?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39738989
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739054
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt256k,

https://www.nuget.org/packages/CommandLineParser

Неплохой, я протестировал, но есть вопрос:
есть параметр, для него указано значение по умолчанию, при разорках этот параметр будет присутствовать в любом случае, и как понять, что параметр именно был передан юзером?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739059
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kи как понять, что параметр именно был передан юзером?не делать его по умолчанию))))
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739075
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,
Код: c#
1.
MyMetod(int n, string s = "member") 


Как определить, что второй параметер был передан?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739078
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kи как понять, что параметр именно был передан юзером?

Зачем? Какая разница откуда он был передан. Тут нужен результат.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739092
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fkthat,
Как всегда в точку.
Автор туману напускает, а у самого Вангуем один параметр.
Кроме того, если встретится 2 или неформат, то сразу выход и справка в out "как надо".

дядя Петя, у тебя какая-то бессвязная речь, что такое "у самого Вангуем"?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739095
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужна такой механизм, то не нужно задавать значение по умолчанию. Если значение параметра не задано, вы определите, что он не определен пользователем и определите его значение по умолчанию в коде. ваш КО.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739100
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesЕсли нужна такой механизм, то не нужно задавать значение по умолчанию. Если значение параметра не задано, вы определите, что он не определен пользователем и определите его значение по умолчанию в коде. ваш КО.

да, это один вменяемый вариант
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739110
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kRoman MejtesЕсли нужна такой механизм, то не нужно задавать значение по умолчанию. Если значение параметра не задано, вы определите, что он не определен пользователем и определите его значение по умолчанию в коде. ваш КО.

да, это один вменяемый вариантвроде у тебя бессвязные вопросы.
НЕ НУЖНО ЗАДАВАТЬ ПО УМОЛЧАНИЮ)))
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739327
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatМне кажется

skyANA
Код: c#
1.
Console.WriteLine("/name parameter is set to: {0}", args[i + 1]);





тут надо заменить на

Код: c#
1.
Console.WriteLine("/name parameter is set to: {0}", args[++i]);


Можно, но не обязательно. Значение параметра не попадает же под case , получится холостая итерация цикла.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739334
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlskyANA,

Немного офф - а это работает? Недавно натыкался на вопрос switch по строкам, там утверждали что возможно, только ести длина строки одинакова, и предлагали Substring(1,3)
Работает и с короткими версиями ключей.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public static class CommandLineArgumentKey
{
    public const string B = "/b";
    public const string Bar = "/bar";
    public const string F = "/f";
    public const string Foo = "/foo";
    public const string N = "/n";
    public const string Name = "/name";
}


Код: c#
1.
using ArgumentKey = CommandLineArgumentKey;


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
for (int i = 0; i < args.Length; i++)
{
    string arg = args[i];

    try
    {
        if (arg != null)
        {
            switch (arg)
            {
                case ArgumentKey.B:
                case ArgumentKey.Bar:
                    Console.WriteLine("/bar parameter is presented");
                    break;
                case ArgumentKey.F:
                case ArgumentKey.Foo:
                    Console.WriteLine("/foo parameter is presented");
                    break;
                case ArgumentKey.N:
                case ArgumentKey.Name:
                    Console.WriteLine("/name parameter is set to: {0}", args[i + 1]);
                    break;
            }
        }
    }
    catch (FormatException)
    {
        throw new ArgumentException("Input parameter is not in a correct format.", arg);
    }
    catch (IndexOutOfRangeException)
    {
        throw new ArgumentNullException(arg, "Required input parameter is missing.");
    }
}
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739336
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныskyANAИ что?
Да нет, ничего, я, чесслово, не против, если случай настолько простой, что это будет работать.У ТС проде простой.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739340
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAСон Веры Павловныпропущено...

Да нет, ничего, я, чесслово, не против, если случай настолько простой, что это будет работать.У ТС проде простой.

могут быть не только флаги, но значения надо передавать, например,

-s sqlserver -d database -u uid -p pwd
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739342
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kskyANAпропущено...
У ТС проде простой.

могут быть не только флаги, но значения надо передавать, например,

-s sqlserver -d database -u uid -p pwd
Офуенно сложно взять за ключем параметер.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739347
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kskyANAпропущено...
У ТС проде простой.

могут быть не только флаги, но значения надо передавать, например,

-s sqlserver -d database -u uid -p pwd
Дык в примере "/name" - это как раз не флаг, а значение :)

Рассмотрим конкретно Ваш случай:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static class CommandLineArgumentKey
{
    public const string S = "-s";
    public const string Server = "--server";
    public const string D = "-d";
    public const string DB = "--db";
    public const string U = "-u";
    public const string User = "--user";
    public const string P = "-p";
    public const string Password = "--password";
}


Код: c#
1.
using ArgumentKey = CommandLineArgumentKey;


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
string server, database, user, password;

for (int i = 0; i < args.Length; i++)
{
    string arg = args[i];

    try
    {
        if (arg != null)
        {
            switch (arg)
            {
                case ArgumentKey.D:
                case ArgumentKey.DB:
                    database = args[i + 1];
                    break;
                case ArgumentKey.S:
                case ArgumentKey.Server:
                    server = args[i + 1];
                    break;
                case ArgumentKey.P:
                case ArgumentKey.Password:
                    password = args[i + 1];
                    break;
                case ArgumentKey.U:
                case ArgumentKey.User:
                    user = args[i + 1];
                    break;
            }
        }
    }
    catch (FormatException)
    {
        throw new ArgumentException("Input parameter is not in a correct format.", arg);
    }
    catch (IndexOutOfRangeException)
    {
        throw new ArgumentNullException(arg, "Required input parameter is missing.");
    }
}
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739595
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA256kпропущено...


могут быть не только флаги, но значения надо передавать, например,

-s sqlserver -d database -u uid -p pwd
Дык в примере "/name" - это как раз не флаг, а значение :)

Рассмотрим конкретно Ваш случай:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static class CommandLineArgumentKey
{
    public const string S = "-s";
    public const string Server = "--server";
    public const string D = "-d";
    public const string DB = "--db";
    public const string U = "-u";
    public const string User = "--user";
    public const string P = "-p";
    public const string Password = "--password";
}


Код: c#
1.
using ArgumentKey = CommandLineArgumentKey;


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
string server, database, user, password;

for (int i = 0; i < args.Length; i++)
{
    string arg = args[i];

    try
    {
        if (arg != null)
        {
            switch (arg)
            {
                case ArgumentKey.D:
                case ArgumentKey.DB:
                    database = args[i + 1];
                    break;
                case ArgumentKey.S:
                case ArgumentKey.Server:
                    server = args[i + 1];
                    break;
                case ArgumentKey.P:
                case ArgumentKey.Password:
                    password = args[i + 1];
                    break;
                case ArgumentKey.U:
                case ArgumentKey.User:
                    user = args[i + 1];
                    break;
            }
        }
    }
    catch (FormatException)
    {
        throw new ArgumentException("Input parameter is not in a correct format.", arg);
    }
    catch (IndexOutOfRangeException)
    {
        throw new ArgumentNullException(arg, "Required input parameter is missing.");
    }
}



да, протормозил, лайкнул, потестирую.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739596
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123256kпропущено...


могут быть не только флаги, но значения надо передавать, например,

-s sqlserver -d database -u uid -p pwd
Офуенно сложно взять за ключем параметер.

дядя Петя... (ц, фильм Серёжа, 1960) надо отметить, что твой лексикон загадочен, слово "офуенно" мне не знакомо и в словарях не нашел, что оно означает?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739604
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kслово "офуенно" мне не знакомо

Это то же самое, что "очешуенно".
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739616
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,
Тебя больше должна беспокоить твоя некомпетентность совместно с гонором.
Нечасто встречается.
Плохой характер могут себе позволить умные люди.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739624
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA256kпропущено...


могут быть не только флаги, но значения надо передавать, например,

-s sqlserver -d database -u uid -p pwd
Дык в примере "/name" - это как раз не флаг, а значение :)

Рассмотрим конкретно Ваш случай:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static class CommandLineArgumentKey
{
    public const string S = "-s";
    public const string Server = "--server";
    public const string D = "-d";
    public const string DB = "--db";
    public const string U = "-u";
    public const string User = "--user";
    public const string P = "-p";
    public const string Password = "--password";
}


Код: c#
1.
using ArgumentKey = CommandLineArgumentKey;


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
string server, database, user, password;

for (int i = 0; i < args.Length; i++)
{
    string arg = args[i];

    try
    {
        if (arg != null)
        {
            switch (arg)
            {
                case ArgumentKey.D:
                case ArgumentKey.DB:
                    database = args[i + 1];
                    break;
                case ArgumentKey.S:
                case ArgumentKey.Server:
                    server = args[i + 1];
                    break;
                case ArgumentKey.P:
                case ArgumentKey.Password:
                    password = args[i + 1];
                    break;
                case ArgumentKey.U:
                case ArgumentKey.User:
                    user = args[i + 1];
                    break;
            }
        }
    }
    catch (FormatException)
    {
        throw new ArgumentException("Input parameter is not in a correct format.", arg);
    }
    catch (IndexOutOfRangeException)
    {
        throw new ArgumentNullException(arg, "Required input parameter is missing.");
    }
}




кстати, в свитч попадает вся подстрока флаг + значение, например,
так сработает
-s server22

а так - нет
-sserver22
флаг просто не будет найден
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739634
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kа так - нет
-sserver22это ошибка формата с выводом хелпа юзверю
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739723
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kskyANAпропущено...

Дык в примере "/name" - это как раз не флаг, а значение :)

Рассмотрим конкретно Ваш случай:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static class CommandLineArgumentKey
{
    public const string S = "-s";
    public const string Server = "--server";
    public const string D = "-d";
    public const string DB = "--db";
    public const string U = "-u";
    public const string User = "--user";
    public const string P = "-p";
    public const string Password = "--password";
}



Код: c#
1.
using ArgumentKey = CommandLineArgumentKey;



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
string server, database, user, password;

for (int i = 0; i < args.Length; i++)
{
    string arg = args[i];

    try
    {
        if (arg != null)
        {
            switch (arg)
            {
                case ArgumentKey.D:
                case ArgumentKey.DB:
                    database = args[i + 1];
                    break;
                case ArgumentKey.S:
                case ArgumentKey.Server:
                    server = args[i + 1];
                    break;
                case ArgumentKey.P:
                case ArgumentKey.Password:
                    password = args[i + 1];
                    break;
                case ArgumentKey.U:
                case ArgumentKey.User:
                    user = args[i + 1];
                    break;
            }
        }
    }
    catch (FormatException)
    {
        throw new ArgumentException("Input parameter is not in a correct format.", arg);
    }
    catch (IndexOutOfRangeException)
    {
        throw new ArgumentNullException(arg, "Required input parameter is missing.");
    }
}





кстати, в свитч попадает вся подстрока флаг + значение, например,
так сработает
-s server22

а так - нет
-sserver22
флаг просто не будет найден
Да ладно? В самом деле?!
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739791
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,

Пытался:

А есть какой-нибудь универсальный способ работы с параметрами командной строки?

Забил.

Ну, в VB.Net/VB6 есть ф-ция Command(), которая достает командную строку целиком, дальше на вкус и цвет. Мне ее обычно достаточно.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739805
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,
Целиком строка это склеить массив же.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739833
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
public const - делать не хорошо, используйте public static readonly.
лучше используйте const с модификатором private.
почему, уже обсуждали на этом сервер
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739834
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*форуме
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739839
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

а error "A constant value is expected" как победишь?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739854
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

с этим значит не сталкивался
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739862
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANARoman Mejtes,

а error "A constant value is expected" как победишь?


"if-else". Лично мне switch всегда не нравится - как-то он выглядит на мой взгляд некрасиво, плюс обычно неудобно, что скоуп кейсов не ограничен самим кейсом, если не вставить {}. Впрочем, дело вкуса. "Const" спокойно можно объявлять не только как private, а как internal - проблемы могут быть только когда они видны снаружи сборки.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739863
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

enum, значения относительно выбранного значения должны определяться private константами в Case:
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739865
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ само по себе открытое поле\константа не гарантирует уникальности значения. То есть в классе CommandLineArgumentKey константы могут иметь одинаковое значение, а сравнение в данном случае идет по типу. + сейчас в swich можно и извернуться :)
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739879
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesskyANA,

enum, значения относительно выбранного значения должны определяться private константами в Case:
private зачем? internal достаточно
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739915
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77256k,

Пытался:

А есть какой-нибудь универсальный способ работы с параметрами командной строки?

Забил.

Ну, в VB.Net/VB6 есть ф-ция Command(), которая достает командную строку целиком, дальше на вкус и цвет. Мне ее обычно достаточно.

https://nugetmusthaves.com/Package?q=command line parser

ребят... эээх.. да пофих ))
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739972
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123256k,
Тебя больше должна беспокоить твоя некомпетентность совместно с гонором.
Нечасто встречается.
Плохой характер могут себе позволить умные люди.

Дядя Петя, вы .... о чём? (фильм Серёжа, 1960)
Очешуенно
...
Рейтинг: 0 / 0
CommandLine parser?
    #39739981
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k, ты в подпись себе поставь). Детский сад.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39740038
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,
Давай свою следующую смешную попытку доказать что string[] args тебе не подходит))).
...
Рейтинг: 0 / 0
CommandLine parser?
    #39740044
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Аргументы командной строки - пережиток. Все должно быть в конфигах!
...
Рейтинг: 0 / 0
CommandLine parser?
    #39740046
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Аргументы командной строки - пережиток. Все должно быть в конфигах!
не хочет. Считает что самый умный.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39740052
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Petro123Cat2Аргументы командной строки - пережиток. Все должно быть в конфигах!
не хочет. Считает что самый умный.
Это нормально. Каждый программист - самый умный
...
Рейтинг: 0 / 0
CommandLine parser?
    #39740053
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,
))
...
Рейтинг: 0 / 0
CommandLine parser?
    #39740158
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Аргументы командной строки - пережиток. Все должно быть в конфигах!

Неужели никаким CLI не пользуетесь?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39741127
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС,
string[] args подошел?
Что в итоге?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39741152
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Petro123пропущено...
не хочет. Считает что самый умный.
Это нормально. Каждый программист - самый умный

Здесь речь не про программистов, которых зовут типа Петя***
...
Рейтинг: 0 / 0
CommandLine parser?
    #39741161
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kCat2пропущено...

Это нормально. Каждый программист - самый умный

Здесь речь не про программистов, которых зовут типа Петя***ты начал читать свой топик)).
Вопрос повторить или модератор пусть закрывает?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39741168
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123256kпропущено...


Здесь речь не про программистов, которых зовут типа Петя***ты начал читать свой топик)).
Вопрос повторить или модератор пусть закрывает?


жгучий юзер
передаст команду админу
...
Рейтинг: 0 / 0
CommandLine parser?
    #39741270
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
skyANACLI
Насчет конфигов я, конечно, пошутил. Хотя в никсах конфиги широко распространены. Микрософт тоже баловался с ини-файлами.

А зачем? Я не пишу консольных программ.
Если я пишу программу, в которой юзер что-то должен выбрать, то я делаю это на форме с понятным контролами, где пользователь может поставить галочки или выбрать что-то из комбобокса, а не зубрить синтаксис командной строки.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39741436
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2skyANACLI
Насчет конфигов я, конечно, пошутил. Хотя в никсах конфиги широко распространены. Микрософт тоже баловался с ини-файлами.

А зачем? Я не пишу консольных программ.
Если я пишу программу, в которой юзер что-то должен выбрать, то я делаю это на форме с понятным контролами, где пользователь может поставить галочки или выбрать что-то из комбобокса, а не зубрить синтаксис командной строки.
Я спросил не про пишите, а про пользуетесь.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39746985
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,

ты уже удовлетворился разбором ком.строки?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747047
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Микрософт тоже баловался с ини-файлами.
Тоже ini обожаю. + да, командная строка, в частности при вызове одного exe из другого (внутри приложения)
На каком-то этапе б'ольшую часть настроек, что было в реестре скинул в ini (удобнее сохранять, просматривать/редактировать в блокноте, а еще на папку/файл проще права назначать, если надо например "для всех пользователей").
GetPrivateProfileString / GetPrivateProfileInt / WritePrivateProfileString с индексом W + пара-тройка пользовательских ф-ций на их базе, плевать на depricated.
Даже языковую локализацию на базе ini сделал. Правда ini юникодные делать надо.

А вот как .Net-овские xml(?) конфиги устроены, никогда даже врубиться не пытался и не планирую.
ИМХО, каждый делает как удобней, как привык.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747060
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77А вот как .Net-овские xml(?) конфиги устроены, никогда даже врубиться не пытался и не планирую.
ИМХО, каждый делает как удобней, как привык.не каждый, а один процент работающих в любой профессии.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747078
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЗачем, если в Main передаётся string[] args ?

Environment.CommandLine поуниверсальнее будет
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747096
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77ИМХО, каждый делает как удобней, как привык
А с групповыми политиками как быть?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747120
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилskyANAЗачем, если в Main передаётся string[] args ?

Environment.CommandLine поуниверсальнее будетЭто просто строка, её разобрать ещё надо.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747139
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Cat2Микрософт тоже баловался с ини-файлами.
Тоже ini обожаю. + да, командная строка, в частности при вызове одного exe из другого (внутри приложения)
На каком-то этапе б'ольшую часть настроек, что было в реестре скинул в ini (удобнее сохранять, просматривать/редактировать в блокноте, а еще на папку/файл проще права назначать, если надо например "для всех пользователей").
GetPrivateProfileString / GetPrivateProfileInt / WritePrivateProfileString с индексом W + пара-тройка пользовательских ф-ций на их базе, плевать на depricated.
Даже языковую локализацию на базе ini сделал. Правда ini юникодные делать надо.

А вот как .Net-овские xml(?) конфиги устроены, никогда даже врубиться не пытался и не планирую.
ИМХО, каждый делает как удобней, как привык.
А как там у ini-файлов дела с типизацией получаемых значений? С пользовательскими настройками? С разделением пользовательских настроек (когда пользователей много, а ini-файл один)? Объединением настроек из нескольких файлов? В стандартной дотнетовской системе настроек это всё есть из коробки.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747152
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныДмитрий77пропущено...

Тоже ini обожаю. + да, командная строка, в частности при вызове одного exe из другого (внутри приложения)
На каком-то этапе б'ольшую часть настроек, что было в реестре скинул в ini (удобнее сохранять, просматривать/редактировать в блокноте, а еще на папку/файл проще права назначать, если надо например "для всех пользователей").
GetPrivateProfileString / GetPrivateProfileInt / WritePrivateProfileString с индексом W + пара-тройка пользовательских ф-ций на их базе, плевать на depricated.
Даже языковую локализацию на базе ini сделал. Правда ini юникодные делать надо.

А вот как .Net-овские xml(?) конфиги устроены, никогда даже врубиться не пытался и не планирую.
ИМХО, каждый делает как удобней, как привык.
А как там у ini-файлов дела с типизацией получаемых значений? С пользовательскими настройками? С разделением пользовательских настроек (когда пользователей много, а ini-файл один)? Объединением настроек из нескольких файлов? В стандартной дотнетовской системе настроек это всё есть из коробки.для ini файлов есть api, со времен windows 3.1 работает супер просто и супер быстро :D
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747161
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,
API у всего есть. Даже у чайника. А вот типизации у него вроде нету.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747182
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA string[] args
плохо себя ведёт если в качестве параметров передаются имена файлов, содержащие пробелы
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747186
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesдля ini файлов есть api, со времен windows 3.1 работает супер просто и супер быстро :D
и у Registry есть API (со времён windows 3.1 что характерно)
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747187
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилRoman Mejtesдля ini файлов есть api, со времен windows 3.1 работает супер просто и супер быстро :D
и у Registry есть API (со времён windows 3.1 что характерно)
на счет реестра в win3.1 сомневаюсь, он там был, но был не сложнее ini файла, очень номинально
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747196
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesСон Веры ПавловныА как там у ini-файлов дела с типизацией получаемых значений? С пользовательскими настройками? С разделением пользовательских настроек (когда пользователей много, а ini-файл один)? Объединением настроек из нескольких файлов? В стандартной дотнетовской системе настроек это всё есть из коробки.для ini файлов есть api, со времен windows 3.1 работает супер просто и супер быстро :D
Я в курсе про апи (GetPrivateProfile.. WritePrivateProfile..). Оно всего вышеперечисленного не умеет.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747206
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилskyANA string[] args
плохо себя ведёт если в качестве параметров передаются имена файлов, содержащие пробелыв батниках надо в кавычки. А тут?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747226
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesИзопропилпропущено...

и у Registry есть API (со времён windows 3.1 что характерно)
на счет реестра в win3.1 сомневаюсь, он там был, но был не сложнее ini файла, очень номинально
ветка была одна, а иерархическая структура присутствовала
в NT 3.1 (1993) реестр был в нынешнем виде
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747245
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Изопропилпропущено...

плохо себя ведёт если в качестве параметров передаются имена файлов, содержащие пробелыв батниках надо в кавычки. А тут?
аналогично, но в string[] args будет несколько не то что ожидается
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747267
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилPetro123пропущено...
в батниках надо в кавычки. А тут?
аналогично, но в string[] args будет несколько не то что ожидается
А в Environment.GetCommandLineArgs()?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747268
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Ну в батнике то все нормалььно с %1
)))
MS косяк?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747275
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ну в батнике то все нормалььно с %1
Где?

runbot.bat
Код: powershell
1.
2.
3.
@echo off

echo %1
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747292
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Вы кто? Я же говорил, что на ваши писанины у меня фильтр. Только заголовок поста.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747317
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилskyANA string[] args
плохо себя ведёт если в качестве параметров передаются имена файлов, содержащие пробелы

Ну так закавычивать надо, кому ж понравится, такое и в линуксе не проходит.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747319
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123skyANA,
Вы кто? Я же говорил, что на ваши писанины у меня фильтр. Только заголовок поста.

дядя Петя, только откинулся и снова бузотёришь
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747328
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,
Киш, дети и двоечники из топика))
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747362
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kдядя бот Петя
поправил
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747377
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA256kдядя бот Петя
поправил

Да. ошибся.

ботя
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747388
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,skyANA
Вы нашли друг друга. Третий где?
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747447
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123256k,skyANA
Вы нашли друг друга. Третий где?

ты же и есть третий, хотя - нет, первый!
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747683
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныА как там у ini-файлов дела ... С пользовательскими настройками? С разделением пользовательских настроек (когда пользователей много, а ini-файл один)? Объединением настроек из нескольких файлов?...

IO.Path.Combine(GetFolderPath(SpecialFolder.CommonApplicationData), "Proga") -настройки, общие для всех пользователей
C:\ProgramData\Proga
Я кладу ini-файл туда, давая этой папке общий доступ для "всех и вся" при инсталляции.
Понимаю, что неправильно (в плане приватности настроек), но судя по всему моих пользователей это устраивает.
А вот когда клал в реест в Current User, было куча претензий, типа "я тут админ, настроил все, а потом открываешь (очевидно под другим юзером) и ни фига нет". Теперь подобных претензий нет от слова "совсем".
В принципе можно и в реестр в HKLM, по тому же принципу, но как-то прикипел к ini уже.

Если индивидуальные настройки, то наверно SpecialFolder.ApplicationData (в папке C:\Users\<User>)
(папка данных пользователя).
Я про этот вариант думал (хотя б как про опцию),
но чего разводить огород, если как показал опыт всех и так все устраивает (общие настройки для всех пользователей).
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747695
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,
Ты перепутал ностальгию и функционал/удобство.
В детстве в зубном пломбы делали белые белые?)
Тоже наверно так рассуждает и сейчас - зачем что то новое?
ini файл не типизирован. Не сохраняет TPoint.
Не сбрасывает настройки в по умолчанию при смене версии.
Дак кого тогда убеждаем что "чего разводить огород"?
Ну прикипел и прикипел. Это банальность.
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747838
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77но чего разводить огород, если как показал опыт всех и так все устраивает (общие настройки для всех пользователей).

примерно из той же оперы, подключил розетку от освещения на скрутку, вроде всех устраивает, все довольны.
и соответствующее отношение, к сделать "нормально": нафига оно мне? я же не космический шатл строю.

и.. ща немного бомбить не по теме буду...

ходят потом с транспарантами по улицам и ноют, как всё плохо, какой плохой %президент%
бла-бла-бла
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747849
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий77но чего разводить огород, если как показал опыт всех и так все устраивает (общие настройки для всех пользователей).

примерно из той же оперы, подключил розетку от освещения на скрутку, вроде всех устраивает, все довольны.
Не совсем - аналогия "подключил на скрутку" подразумевает более простой и ненапряжный способ. В данном случае всё наоборот: из-за лени прочитать пару страниц на MSDN человек пишет вручную энное количество ограниченного по функциональности кода, вместо того, чтобы воспользоваться стандартным функционалом, который не требует писать вообще никакого кода. Т.е. непонятно ради чего усложняет себе жизнь, и получает на выходе не пойми что.

Сон Веры ПавловныА как там у ini-файлов дела ... С пользовательскими настройками? С разделением пользовательских настроек (когда пользователей много, а ini-файл один)? Объединением настроек из нескольких файлов?
Еще забыл: возможность биндинга к настройкам (в т.ч. возможность указывать эти биндинги прямо в UI-дизайнере).
...
Рейтинг: 0 / 0
CommandLine parser?
    #39747868
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловныаналогия "подключил на скрутку" подразумевает более простой и ненапряжный способ. Вкак сказать)
По сравнению с Wago без распредКоробки?))
...
Рейтинг: 0 / 0
CommandLine parser?
    #39748361
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныНе совсем - аналогия "подключил на скрутку" подразумевает более простой и ненапряжный способ. В данном случае всё наоборот: из-за лени прочитать пару страниц на MSDN человек пишет вручную энное количество ограниченного по функциональности кода, вместо того, чтобы воспользоваться стандартным функционалом, который не требует писать вообще никакого кода. Т.е. непонятно ради чего усложняет себе жизнь, и получает на выходе не пойми что.

Ну да, согласен. Хотя я хотел акцентировать внимание на ненадёжном способе
...
Рейтинг: 0 / 0
96 сообщений из 96, показаны все 4 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / CommandLine parser?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]