Помощь - Поиск - Пользователи - Календарь
Полная версия: Переменная строки запуска
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Resager
Как сделать в Паскале так, чтобы использовать в переменной ключ строки запуска
например, запускаешь (ХХХ.ехе -к), и в программе использовать этот ключ ("к", или "-к")?
klem4
в следующий раз используй поиск: Как передать параметры программе?
Resager
Я искал, не нашёл, пасиба, папробую, а в трэй можна каким-нибудь процессом запихнуть?
volvo
В трей? Из 16-битного DOS-приложения? Ты разделом не ошибся, часом? blink.gif
Resager
хм, я в процессе изучения, патаму и спрашиваю, ваще ДОС мне нравицо! Сделал себе заменитель тулбара - батник, а Паскаль как доп. ф-ции к батнику! Где можна скачать хороший учебник по Паскалю + всё про ДОС приложения, хачю узнать больше!!!!
Ozzя
Цитата(Resager @ 22.09.2007 18:03) *

Где можна скачать хороший учебник по Паскалю + всё про ДОС приложения, хачю узнать больше!!!!

http://zeus.sai.msu.ru:7000/programming/bp70_lr/index.shtml
Resager
У меня не получается получить ключи!!!

Вот сама прога:
var
s: string; i:integer; c:word;
begin
i:=ParamCount;
s:=ParamStr©;
Writeln('s(string)=',s,' i(inteher)=',i,' c(word)=');
writeln;
writeln('code:');
writeln('var s: string; i:integer; c:word; ');
writeln('begin ');
writeln('i:=ParamCount; ');
writeln('s:=ParamStr©; ');
writeln('Writeln(*s(string)=*,s,* i(inteher)=*,i,* c(word)=*); ');
readln; end.


А во что я получаю:
____1__param(это первая попытка) ввёл так -k
s(string)=D:\PAS\BIN\PM\PARAM.EXE i(inteher)=1 c(word)=

code:
var s: string; i:integer; c:word;
begin
i:=ParamCount;
s:=ParamStr©;
Writeln(*s(string)=*,s,* i(inteher)=*,i,* c(word)=*);

Для продолжения нажмите любую клавишу . . .
____2__param(это вторая попытка ввёл так -k -r
s(string)=D:\PAS\BIN\PM\PARAM.EXE i(inteher)=2 c(word)=

code:
var s: string; i:integer; c:word;
begin
i:=ParamCount;
s:=ParamStr©;
Writeln(*s(string)=*,s,* i(inteher)=*,i,* c(word)=*);

З.ы. Ozzя А есть в оффлайн?
TarasBer
Цитата(Resager @ 24.09.2007 17:01) *

У меня не получается получить ключи!!!

Вот сама прога:
var
s: string; i:integer; c:word;
begin
i:=ParamCount;
s:=ParamStr©;
Writeln('s(string)=',s,' i(inteher)=',i,' c(word)=');
writeln;
writeln('code:');
writeln('var s: string; i:integer; c:word; ');
writeln('begin ');
writeln('i:=ParamCount; ');
writeln('s:=ParamStr©; ');
writeln('Writeln(*s(string)=*,s,* i(inteher)=*,i,* c(word)=*); ');
readln; end.


А во что я получаю:
____1__param(это первая попытка) ввёл так -k
s(string)=D:\PAS\BIN\PM\PARAM.EXE i(inteher)=1 c(word)=

code:
var s: string; i:integer; c:word;
begin
i:=ParamCount;
s:=ParamStr©;
Writeln(*s(string)=*,s,* i(inteher)=*,i,* c(word)=*);

Для продолжения нажмите любую клавишу . . .
____2__param(это вторая попытка ввёл так -k -r
s(string)=D:\PAS\BIN\PM\PARAM.EXE i(inteher)=2 c(word)=

code:
var s: string; i:integer; c:word;
begin
i:=ParamCount;
s:=ParamStr©;
Writeln(*s(string)=*,s,* i(inteher)=*,i,* c(word)=*);

З.ы. Ozzя А есть в оффлайн?

А что не так? С изначально равно нулю, а нулевой параметр - это путь к самой программе.
SKVOZNJAK
Цитата(Resager @ 24.09.2007 13:01) *

А есть в оффлайн?

Было smile.gif На диске "паскаль & delphi". Самого морозит от учебников распылённых по сети и в других трудночитаемых формах. Лови, что под рукой оказалось smile.gif
Resager
SKVOZNJAK - ПАСИБА, ещё не всё скачал, но скачаю как время будет (сейчас сижу в институтском "бесплатном" интернете, что само за себя гаварит - тормозной = 1кб в с....)

TarasBer - так я же ввожу ключи и параметр равен 2 или 1 (там 2 случая). если нулевой параметр равен нулю, то как получить второй параметр? Может вставить в ParamStr(c,u) вторую переменную "u"?
TarasBer
Цитата(Resager @ 25.09.2007 19:12) *

SKVOZNJAK - ПАСИБА, ещё не всё скачал, но скачаю как время будет (сейчас сижу в институтском "бесплатном" интернете, что само за себя гаварит - тормозной = 1кб в с....)

TarasBer - так я же ввожу ключи и параметр равен 2 или 1 (там 2 случая). если нулевой параметр равен нулю, то как получить второй параметр? Может вставить в ParamStr(c,u) вторую переменную "u"?


С изначально равно нулю. Потому что вы его никак не определяли. А по умолчанию он ноль. И вы берёте ПарамСтр(С). И он даёт нулевой параметр - само имя программы вместе с путём. Если хотите знать эн-тый параметр, то перед вызовом ПарамСтр(С) впишите С := эн.
Resager
TarasBer - теперь я понял, пасиба, а ещё один вопрос, у меня поключаемые модули отсутствуют, ккакие файлы мне нужно найти и вставить в папку с Паскалем штоб они отображались?
TarasBer
Цитата(Resager @ 25.09.2007 19:41) *

TarasBer - теперь я понял, пасиба, а ещё один вопрос, у меня поключаемые модули отсутствуют, ккакие файлы мне нужно найти и вставить в папку с Паскалем штоб они отображались?

Какие модули? И где они должны отображаться? Чёт не понял вопроса.
Resager
Типа crt, graphic......
TarasBer
Цитата(Resager @ 26.09.2007 16:02) *

Типа crt, graphic......

Ну пишешь в начале текста uses CRT, Graph; (graphicS - это из дельфы)
А в чём проблема-то?
Resager
TarasBer, проблема в том, что компилятор выдаёт ошибку типа не найден файл, или это чё за фигня (примерно так)
volvo
Путь к файлу Graph.TPU в меню "Options -> Directories -> Unit Directories" прописан?
Resager
Как сделать в три действия (использовать можно тока * и + и присвоить, но sqrt нельзя):
a(в восьмой степени)
и в минимум действий:
a(в седьмой),
(а+1)(в 21-ой)
(а+в)(в 100-й)
(х+у)(в 8-й)
(а+в+с)(в 32-й)
З. Ы. Тока не смейтесь.

volvo, был не прописан (диск не тот) но при выполнении проги с дилэем выдаёт DIVISION BY ZERO, но кампилирует!
вот
Код

uses Crt;

begin
   Sound(220);        { Beep }
   Delay(200);        { For 200 ms }
   NoSound;           { Relief! }
end.


А вот с графикой (кампилирует, но ничего не выводит)
Код

Uses graph;
Var gd, gm, err, x, y:integer;
begin
gd:=detect;
initgraph(gd,gm,' ');
err:=graphresult;
if (err<>grok) then begin
   Writeln(grapherrormsg(err));
   Halt(1);
end;
x:=getmaxx div 2;
y:=getmaxy div 2;
Setcolor(2);
Circle(x,y,100);
Closegraph;
readln; end.
TarasBer
Цитата(Resager @ 1.10.2007 20:25) *

Как сделать в три действия (использовать можно тока * и + и присвоить, но sqrt нельзя):
a(в восьмой степени)
и в минимум действий:
a(в седьмой),
(а+1)(в 21-ой)
(а+в)(в 100-й)
(х+у)(в 8-й)
(а+в+с)(в 32-й)
З. Ы. Тока не смейтесь.


Я знаю как, но скажу лишь в новой теме.

Цитата

volvo, был не прописан (диск не тот) но при выполнении проги с дилэем выдаёт DIVISION BY ZERO, но кампилирует!
вот
Код

uses Crt;

begin
   Sound(220);        { Beep }
   Delay(200);        { For 200 ms }
   NoSound;           { Relief! }
end.



Вот на этом вылетает с делением на 0?

Цитата


А вот с графикой (кампилирует, но ничего не выводит)
Код

Uses graph;
Var gd, gm, err, x, y:integer;
begin
gd:=detect;
initgraph(gd,gm,' ');
err:=graphresult;
if (err<>grok) then begin
   Writeln(grapherrormsg(err));
   Halt(1);
end;
x:=getmaxx div 2;
y:=getmaxy div 2;
Setcolor(2);
Circle(x,y,100);
Closegraph;
readln; end.



Поменяйте местами клозеграф и ридлн.
volvo
Цитата
при выполнении проги с дилэем выдаёт DIVISION BY ZERO
В FAQ... Там есть тема, в которой описано, что делать в таком случае...
Resager
А хде этот фак, я его в поиске не нашёл (в каком разделе?)
volvo
Error 200. Crt & Delay
Resager
А можно ли средствами Паскаля организовать файл (имя введено с терминала), в указанной директории, ну и вывод подкаталогов, в которых этот файл находится (допустим, если их 2, то только один)
Например, я знаю, что файл 1.wav находится в гдето в папке 555, (но эта папка содержит 5000 тысяч папок, и в одной из них этот файл), я ввожу "С:\555", а мне выдаётся ответ folder456\1.wav
volvo
Файлы -> Поиск файла по директориям... Начни уже пользоваться поиском...
Resager
Бальшое Пасиба, за ответ, у меня ещё один вапрос (в поиске не нашел):
как сделать, так, что бы Паскаль открывал (шоб оькрыть файл) одну и ту же папку, а не ту, в которой он лежит( пробовал изменить в меню ФАЙЛ-чанге дир, не канает, после перезапуска!
З.Ы. Тем более скоро поставлю ДСЛ2, (ща диалап у меня) тогда буду рыскать в форуме, пока не найду....

(если кому нада - нидавно поймал один вирус, так он использовал и батники, вбс(через некоторое время обновлял свои копии), и конфиги, и сам текст программы-вируса содержал в текстовом(для восстановления! Этот вирус прописал на автозапуск каждого винчестера!!! Кому нада, могу в архиве сбросить, дыры заделать, а может кто скажет, антивирус его берёт?)
volvo
Цитата
как сделать, так, что бы Паскаль открывал (шоб оькрыть файл) одну и ту же папку
Открывать Паскаль через Ярлык, и прописать в этом Ярлыке нужную рабочую директорию:
Resager
ну скриншот не обязательно было, я бы и так понял, про рабочюю директорию, кстати у меня руская версия....
Но всё равно не канает, он не сохранет директории введённые в (otions->directories)!!!!
volvo
Цитата
он не сохранет директории введённые в (otions->directories)

А в Options -> Environment -> Preferences у тебя установлено автосохранение на Environment+Desktop?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.