[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.12826 Reply
Анон, поделись мудростью.
Пишу лабу на Паскале. Консольное неважночто. Важно то, что программа принимает входные данные через параметры командной строки. Ну типа:
> prog /i "a.in" /o"a.out" /p "std.pr"
Проблема в том, что я не могу придумать как сделать разбор этих параметров. Для простоты пусть значения параметра всегда будут в кавычках. Чтобы не разбирать когда кавычки есть, когда их нет.
Конечно я наслышан о том, что есть уже готовые модули (например getopts в FreePascal), но во-первых препод в задницу пошлёт за такие решения, во-вторых интересно всё-таки понять как это вообще делается. Ведь эти модули тоже кем-то написаны.
Пока что у меня вообще нету никаких идей, кроме того чтобы сначала все параметры слить в файл, а потом читать из него по символам. Получиться что-то вроде потока, так проще работать, чем ебстись с этими ParamCount и ParamStr. Потому что я пробовал напрямую циклами по ParamCount и ParamStr что-то написать... ну это вапще жопоболь. Хотя и из файла поток символов этот потом анализировать тоже не с балкона ссать. Идея с файлом мне не нравиться уже тем, что я из памяти пишу на диск только для того чтобы потом снова читать в память...
В общем, анончик, подскажи хотя бы в какую сторону думать. Потому что я на этом совсем забуксовал и не знаю как дальше двигаться. Может подскажешь какие-нибудь общие подходы? Или покажешь что-нибудь на простых примерах? Хоть что-нибудь чтобы с места сдвинуться.
>> No.12829 Reply
>>12826
Что такое Пасцал?
>> No.12831 Reply
>>12829
Лолшто.
>> No.12833 Reply
>>12826
> есть уже готовые модули (например getopts в FreePascal), но препод в задницу пошлёт за такие решения
%Очень много нецензурной брани и пожеланий крайне неприятных событий в жизни в адрес Фурсенко, каждого преподавателя в вузе в отдельности и ректорам всех вузов вместе; порядка 10 Мб текста%

Вот алгоритм:

for ParamIndex := 0 to ParamCount step 2 do begin
   ParamName = Params[ParamIndex];
   ParamValue = Params[ParamIndex + 1];
   if ParamName == "/i" then то-то
   else if ParamName == "/o" then то-то
   else if ParamName == "/p" then то-то
   ...
end
>> No.12841 Reply
>>12833
Привет, напишешь мне курсовую?
>> No.12859 Reply
>>12841
Давай ТЗ.
>> No.12860 Reply
>>12826
На баше например это выглядело бы так:
http://www.shelldorado.com/goodcoding/cmdargs.html
>> No.12861 Reply
>>12826
> В общем, анончик, подскажи хотя бы в какую сторону думать.
Если бы ты хотя бы что-нибудь знал, я бы посоветовал думать в сторону http://en.wikipedia.org/wiki/Formal_grammar и нормальных языков и библиотек, но судя по
> чтобы сначала все параметры слить в файл, а потом читать из него по символам
тебе бы лучше сдохнуть прямо сейчас, потому что потом очень неприятно за такими долбоёбами код править.
>> No.12866 Reply
>>12859
О, а мне диплом напишешь?
>> No.12882 Reply
>>12866
Говори задание.
>> No.12885 Reply
>>12882
А мне сочинение: "Как я провел лето".
>> No.12901 Reply
File: shot0030.png
Png, 316.40 KB, 1280×720 - Click the image to expand
edit Find source with google Find source with iqdb
shot0030.png
>>12885
Тоже у Царёва учился что ле?
>> No.12922 Reply
>>12901
А ведь я правда у него учился, как ты узнал?
>> No.12928 Reply
File: shot0141.png
Png, 331.34 KB, 1280×720 - Click the image to expand
edit Find source with google Find source with iqdb
shot0141.png
>>12922
Я у него сам когда-то это сочинение писал, лол.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]