Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 CommandLine parser?  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Порекомендуйте что-то простое и приличное
26 ноя 18, 12:04    [21744704]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20436
Split Картинка с другого сайта.
26 ноя 18, 12:17    [21744729]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5005
вполне прилично
26 ноя 18, 12:21    [21744737]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26531
Shocker.Pro
Split Картинка с другого сайта.

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

for + switch + case Картинка с другого сайта.
26 ноя 18, 12:26    [21744747]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
256k
Порекомендуйте что-то простое и приличное
первый раз берем входные и сразу библиотеку?
26 ноя 18, 12:28    [21744756]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5005
skyANA
for + switch + case Картинка с другого сайта.

А если логика аргументов допускает произвольный порядок их указания (myprogram.exe /foo /bar == myprogram.exe /bar /foo)?
Если серьезно - гугл в помощь: https://www.google.com/search?q=c# command line parser - готовых библиотек для парсинга этих аргументов ком. строки, как грязи.
26 ноя 18, 12:36    [21744774]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Сон Веры Павловны
skyANA
for + switch + case Картинка с другого сайта.

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


1. йез
2. потому и спросил, чтобы что-то проверенное порекомендовали
26 ноя 18, 12:39    [21744781]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Сон Веры Павловны
вполне прилично


а на шарпе этого же нет?
26 ноя 18, 16:58    [21745177]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Сон Веры Павловны
А если логика аргументов допускает произвольный порядок их указания (myprogram.exe /foo /bar == myprogram.exe /bar /foo)?

Если не усложнять, то порядок причем?
Надо все параметры по разделителю в словарь и отправить словарь в бизнес логику выполнять.
Если параметр a.exe --file myFile.xml, то этот файл и поступит в метод обработки.
26 ноя 18, 17:12    [21745190]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Сон Веры Павловны
skyANA
for + switch + case Картинка с другого сайта.

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


На самом деле, простейший конечный автомат. Я всегда за то, чтобы использовать готовое, но тут, походу, быстрее самому написать, чем в готовом разбираться (не считая, что это готовое надо еще сначала выбрать из этого "как грязи").
26 ноя 18, 17:34    [21745219]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
fkthat,
Как всегда в точку.
Автор туману напускает, а у самого Вангуем один параметр.
Кроме того, если встретится 2 или неформат, то сразу выход и справка в out "как надо".
26 ноя 18, 17:41    [21745229]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26531
Сон Веры Павловны
skyANA
for + switch + case Картинка с другого сайта.

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

И что?

            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.");
                }
            }
26 ноя 18, 20:02    [21745404]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Мне кажется

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



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

Console.WriteLine("/name parameter is set to: {0}", args[++i]);
26 ноя 18, 23:05    [21745534]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
iskatelsql
Member

Откуда:
Сообщений: 785
skyANA,

Немного офф - а это работает? Недавно натыкался на вопрос switch по строкам, там утверждали что возможно, только ести длина строки одинакова, и предлагали Substring(1,3)
27 ноя 18, 00:17    [21745585]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5005
skyANA
И что?

Да нет, ничего, я, чесслово, не против, если случай настолько простой, что это будет работать. В моем случае в свое время было несколько сложнее - ключи со значениями, контекстно-зависимые ключи, сокращенные формы ключей, итп. - пришлось велосипедить что-то вроде того, что выше по ссылке на F#.
iskatelsql
skyANA,
Немного офф - а это работает? Недавно натыкался на вопрос switch по строкам, там утверждали что возможно, только ести длина строки одинакова, и предлагали Substring(1,3)

Если у строк разная длина - то это разные строки, ваш К.О. Разумеется, в этом случае switch по строкам работать не будет, т.к. он фактически сводится к вызову перегруженного оператора ==, который, в свою очередь, вызывает String.Equals(a, b). Здесь, кстати, еще будет нужно, чтобы у строк совпадал регистр.
27 ноя 18, 07:27    [21745651]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
iskatelsql
там утверждали что возможно, только ести длина строки одинакова, и предлагали Substring(1,3)


Что это за ересь?
27 ноя 18, 09:36    [21745711]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
hVostt
Member

Откуда:
Сообщений: 15619
256k,

https://www.nuget.org/packages/CommandLineParser
27 ноя 18, 11:11    [21745808]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
hVostt
256k,

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


Неплохой, я протестировал, но есть вопрос:
есть параметр, для него указано значение по умолчанию, при разорках этот параметр будет присутствовать в любом случае, и как понять, что параметр именно был передан юзером?
27 ноя 18, 12:32    [21745931]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
256k
и как понять, что параметр именно был передан юзером?
не делать его по умолчанию))))
27 ноя 18, 12:39    [21745949]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
256k,
MyMetod(int n, string s = "member") 

Как определить, что второй параметер был передан?
27 ноя 18, 12:52    [21745972]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
hVostt
Member

Откуда:
Сообщений: 15619
256k
и как понять, что параметр именно был передан юзером?


Зачем? Какая разница откуда он был передан. Тут нужен результат.
27 ноя 18, 12:55    [21745980]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Petro123
fkthat,
Как всегда в точку.
Автор туману напускает, а у самого Вангуем один параметр.
Кроме того, если встретится 2 или неформат, то сразу выход и справка в out "как надо".


дядя Петя, у тебя какая-то бессвязная речь, что такое "у самого Вангуем"?
27 ноя 18, 13:13    [21746001]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3404
Если нужна такой механизм, то не нужно задавать значение по умолчанию. Если значение параметра не задано, вы определите, что он не определен пользователем и определите его значение по умолчанию в коде. ваш КО.
27 ноя 18, 13:18    [21746005]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Roman Mejtes
Если нужна такой механизм, то не нужно задавать значение по умолчанию. Если значение параметра не задано, вы определите, что он не определен пользователем и определите его значение по умолчанию в коде. ваш КО.


да, это один вменяемый вариант
27 ноя 18, 13:22    [21746014]     Ответить | Цитировать Сообщить модератору
 Re: CommandLine parser?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
256k
Roman Mejtes
Если нужна такой механизм, то не нужно задавать значение по умолчанию. Если значение параметра не задано, вы определите, что он не определен пользователем и определите его значение по умолчанию в коде. ваш КО.


да, это один вменяемый вариант
вроде у тебя бессвязные вопросы.
НЕ НУЖНО ЗАДАВАТЬ ПО УМОЛЧАНИЮ)))
27 ноя 18, 13:28    [21746028]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить