IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Кодирование длин серий . Текстовый файл.
сообщение
Сообщение #21


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Что такое командная строка - знаешь? Говоря на пальцах, это то, что есть в любом нормальном файловом менеджере, там можно написать myProgram.exe, а можно написать myProgram.exe a b c d, через пробел (если же написать "myProgram.exe a" b c d, то часть, заключённая в кавычки, будет пониматься как один параметр, несмотря на то, что в ней содержится пробел). Это означает, что ты вызываешь программу myProgram.exe с параметрами a, b, c, d. То, что написано в свойствая ярлыка в строке "Объект" - это тоже команда, как правило, она там без параметров. Когда ты открываешь файл "a.txt", на самом деле вызывается команда notepad.exe a.txt, то есть в качестве параметра идёт имя открываемого файла. Поэтому все приличные программы знают, когда надо при запуске показать пустое окно, а когда - сразу открыть файл.

Программа получает информацию о них через функции ParamCount (в данном примере, с myProgram.exe a b c d - 4), и через ParamStr(N) (N от 0 до 4).
Твоя программа может принимать до 3 параметров, надо отдельно разобрать случаи разного их количества, чтобы сформировать, что программа должна делать. Типа так:

var
Decode: boolean;
InFile, OutFile: string;

...
Decode := False;
InFile := '';
OutFile := '';
if ParamCount >= 1 then begin
if ParamStr(1) = '-c' then Decode := False
else if ParamStr(1) = '-d' then Decode := True
else InFile := ParamStr(1);
end;
if ParamCout >= 2 then begin
if InFile = '' then InFile := ParamStr(2) else OutFile := ParamStr(2);
end;
if ParamCount >= 3 then begin
if OutFile = '' then OutFile := ParamStr(3);
end;



--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

Репутация: -  0  +


Спасибо. Стало немного понятней. А можешь привести какой-нибудь простой полный пример как это работает?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #23


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


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


program Test;

var
a, b: extended;
Code: integer;

begin

if ParamCount < 2 then begin
WriteLn('Must be >= 2 parameters!');
Exit;
end;
Val(Paramstr(1), a, Code);
if Code <> 0 then begin
WriteLn(Paramstr(1) , ' is not a number!');
Exit;
end;
Val(Paramstr(2), b, Code);
if Code <> 0 then begin
WriteLn(Paramstr(2) , ' is not a number!');
Exit;
end;

if a > 0 then WriteLn(exp(ln(a) * b))
else if a = 0 then WriteLn(0)
else if (Frac(b) = 0) and (Frac(b/2) = 0) then WriteLn(exp(ln(-a) * b))
else if (Frac(b) = 0) then WriteLn(-exp(ln(-a) * b))
else WriteLn('Invalid argument');

end.




Пример: в командной строке переходите в директорию с этой программой (например, cd c:\progra~1\delphi\projects\test\), потом в командной строке пишете test 2 2, она выводит 4.000000E+0000


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #24


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

Репутация: -  0  +


Spasibo ogromnoje.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.10.2020 6:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name