![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
разбор строка
Максим © (2008-02-20 09:31:00)я передаю параметры для работы свой программы через строку(например так: -a -b -c) все работает,но хотелось чтобы -abc было равносильно -a -b -c.
Как такое сделать?
Максим (2008-02-21 18:12:00) [1]Благодарен вам за ответы, по 41 поразмышлял...наверно я откажусь от мысли делать командноу строку в программе, но реализовать задумку все же попробую, дабы интересно:) еще раз спасибо!
Сергей М. (2008-02-21 13:47:00) [2]
> Максим
Тут, видишь ли вот, в чем дело - ком.строка и иже с ней текстовые опции-параметры как интерыфейс интерпроцессного (или, если угодно, межмодульного) взаимодействия были придуманы несколько для других целей:
1. Обеспечение инф.обмена между программными модулями в гетерогенной среде, т.е. в ситуациях когда взвимодействующине модули разработаны разными программистами, в разных средах разработки и/или с применением несовместимых технологий. Ком.строка в этих ситуациях есть, своего рода, соглашение, которого при необходимости с легкостью могут придерживаться модули, разработанные в подавляющем большинстве сред разработки.
2. Стандартизация и упрощение формирования пакетныхзаданий.
Ни п.1 ни п.2, судя по твоим пояснениям, не являются твоим случаем, потому и небходимость в задействовании в твоей задаче интерфейса ком.строки была подвержена критике (ну или, мягке сказать, сомнению).
Сергей М. (2008-02-21 13:34:00) [3]
> {RASkov} © (21.02.08 10:39) [39]
> неужели автор сам до этого не додумался
Похоже, автор желает по возможности осложнить жизнь юзеру, заставив его ручками формировать ком.строку, держа в голове всю эту командно-параметрическую шнягу. Типа раз уж мне, программеру, геморрой с этой ком.строкой, то пусть уж, мол, и юзер помучается - мол, стадать от придуманного геморроя вдвоем как-то веселей.
{RASkov} (2008-02-21 10:39:00) [4]> [37] Сергей М. © (21.02.08 10:32)
Ну этож вообще очевидно и все просто.... неужели автор сам до этого не додумался.... :))
{RASkov} (2008-02-21 10:37:00) [5]> [36] Максим (21.02.08 10:28)
> то получиться -dstroka что некрасиво,и думаю чтьо не правильно.
А это обязательность такая, любоваться параметрами коммандной строкой?
> но мне все же хотелось узнать как делать правильно и грамотно!
Я думаю, что вот так будет правильнее
-d:stroka
НО! Зачем вообще здесь параметры коммандной строки? Уже об этом говорят.... Просто твоя задача мне, например, не совсем ясна, поэтому что-то посоветовать взамен я не могу :(
Сергей М. (2008-02-21 10:32:00) [6]
> предложите другой вариант передачи параметров
Вариант прост до безобразия - плагин экспортирует некую ф-цию вида
DoSomethingWithParams(Params: TMyParams)
где, например,
TMyParams = array of OleVariant;
Максим (2008-02-21 10:28:00) [7]Германн © (21.02.08 00:43) [30]
2. Параметры не принято передавать в виде "-d 10". Их принято передавать в виде "-d10". Поскольку пробел разделяет параметры.
>2. А если в качестве значение передается строка, то получиться -dstroka что некрасиво,и думаю чтьо не правильно.
Сергей М. © (21.02.08 08:40) [35]
если есть возможность то предложите другой вариант передачи параметров.
Если честно,то я не пойму чем плох сам варинт передачи параметров моим плагинам.
Само присутстиве плагинов считаю уместным в моем случае,т.к. довольно узко-направленные рассчеты производятся в них. Рассчитано на узкий круг людей, которым я продаю их по мере надобности(но не об этом в теме,просто хочу чтобы вы поняли мои действия и могли направить в нужное русло). В каждом плагине реализуется обработка тех или иных данных,причем в некотрых полностью отсутствуют каки-либо параметры,кроме как включение его в работу. В некоторые нужно передавать строкуи параметры для обработки(самый частый вариант в моем случае).
Спасибо всем за ответы! Если есть какие то конкретные мысли, говорите, я все готов выслушать дабы сделать правильно!
По-поводу copy,pos,я умею ими пользоваться и представляю как сделать вариант будь то просто -a 10 -t -b -g 15 -h stroka,
но мне все же хотелось узнать как делать правильно и грамотно!
Сергей М. (2008-02-21 08:40:00) [8]
> допустим выкиеу и что взамен этого?
Да что угодно)
Мало ли возможностей передать/принять нетекстовые параметры в натуральном виде, без преобразований в строку и обратно ..
Германн (2008-02-21 01:05:00) [9]
> Бегущий человек © (21.02.08 01:03) [33]
>
>
> > Германн © (21.02.08 00:54) [32]
>
> А, ну если параметры сложной структуры, со значениями ,
> тогда аффтару советую прочесть про синтаксический разбор
> (самый простой метод - рекурсивный спуск).
>
До изучения букваря?
Бегущий человек (2008-02-21 01:03:00) [10]
> Германн © (21.02.08 00:54) [32]
А, ну если параметры сложной структуры, со значениями ,тогда аффтару советую прочесть про синтаксический разбор (самый простой метод - рекурсивный спуск).
Германн (2008-02-21 00:54:00) [11]
> Бегущий человек © (21.02.08 00:44) [31]
>
>
> А то, что теперь
> 1) Парсим строку параметров в main
> 2)Записываем параметры в mmap
> 3)Шлём плагину сообщение, и он все из mmap вычитывает, без
> геморроя c Paramstr
>
Дык у автора проблемы именно с парсингом строки.
Бегущий человек (2008-02-21 00:44:00) [12]
> Сергей М. © (20.02.08 23:49) [26]
>
> Совет, за неимением вразумительных объяснений по поводу
> оправданности именно такого интерфейса межмодульного взаимодействия,
> как раз и выглядит как "выкинуть нафих интерфейс ком.строки
> вместе с ее парсинг-велосипедом".
>
> Максим (21.02.08 00:17) [27]
>
> допустим выкиеу и что взамен этого?
А то, что теперь
1) Парсим строку параметров в main
2)Записываем параметры в mmap
3)Шлём плагину сообщение, и он все из mmap вычитывает, без геморроя c Paramstr
Германн (2008-02-21 00:43:00) [13]
> Максим (20.02.08 21:11) [20]
>
> хм...что-то криво я изъясняюсь... попробую по-нормальному!
> :)
>
> Есть основная программа(main) и куча плагинов.
> В main есть edit, в котором я пишу: 1)первое слово это название
> плагина,которому будут передаваться параметры и сами данные
> на обработку. 2) параметры 3) данные на обработку.
> Получается что первое слово удаляем(название плагина) все
> остальное передаем плагину на обработку,тот в свою очередь
> должен понять что за параметры,и какие у них значения если
> они вообще предусматриваются. т.е. на пример параметр -a
> и -b идут как "просто" параметры, а параметр -c и -d должны
> быть со значениями,т.е. -a -b -c 5 -d 10, и если после параметра
> с или d нету значение то result = 'error parametrs' and
> exit ;)
>
1. Поработай над "разбором строк". Т.е. на функциях/процедурах из букваря.
В частности Pos и Copy. Изучи их хорошенько.
2. Параметры не принято передаватьв виде "-d 10". Их принято передавать в виде "-d10". Поскольку пробел разделяет параметры.
3. После изучения букваря вернись к ещё одному прочтению [23]. Осознай его суть и если что тогда будет непонятно, задай другой вопрос.
Максим (2008-02-21 00:34:00) [14]причем тут mmap?
Бегущий человек (2008-02-21 00:27:00) [15]Memory mapped file спасут отца русской демократии
Максим (2008-02-21 00:17:00) [16]допустим выкиеу и что взамен этого?
Сергей М. (2008-02-20 23:49:00) [17]
> милости просим
Ну я уже зашел. С советом. Без стука)
Совет, за неимением вразумительных объяснений по поводу оправданности именно такого интерфейса межмодульного взаимодействия, как раз и выглядит как "выкинуть нафих интерфейс ком.строки вместе с ее парсинг-велосипедом".
Максим (2008-02-20 23:31:00) [18]Так надо, здесь я лишь прошу помощи(смотрите выше о чем речь).
Если же у вас есть какие то предложения или советы,то милости просим. А писать то, что нахрен мне это надо....
нчиего личного, просто хочется советов и т.п. услышать =)
Сергей М. (2008-02-20 23:28:00) [19]
> сам тоже сейчас помучаюсь
Пора тебе полаться в *никсоиды - там как никто и нигде более уважают/ценят/холят/лелеют command-line-параноиков)
Сергей М. (2008-02-20 23:26:00) [20]
> Максим (20.02.08 21:11) [20]
Ты что, мазохист ?)
За каким лешим тебе понадобилось своемуплагину (т.е. некоему программному модулю, о котором никто не знает кроме твоего приложения, и который нафих не нужен другим приложениям) передавать параметры в виде текста, да еще и в извращенной форме ?)