Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Переменная строки запуска

Автор: Resager 22.09.2007 18:07

Как сделать в Паскале так, чтобы использовать в переменной ключ строки запуска
например, запускаешь (ХХХ.ехе -к), и в программе использовать этот ключ ("к", или "-к")?

Автор: klem4 22.09.2007 18:16

в следующий раз используй поиск: http://forum.pascal.net.ru/index.php?showtopic=10348&hl=%EF%E0%F0%E0%EC%E5%F2%F0%FB

Автор: Resager 22.09.2007 20:15

Я искал, не нашёл, пасиба, папробую, а в трэй можна каким-нибудь процессом запихнуть?

Автор: volvo 22.09.2007 20:27

В трей? Из 16-битного DOS-приложения? Ты разделом не ошибся, часом? blink.gif

Автор: Resager 22.09.2007 21:03

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

Автор: Ozzя 24.09.2007 12:03

Цитата(Resager @ 22.09.2007 18:03) *

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

http://zeus.sai.msu.ru:7000/programming/bp70_lr/index.shtml

Автор: Resager 24.09.2007 20: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я А есть в оффлайн?

Автор: TarasBer 25.09.2007 1:20

Цитата(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 25.09.2007 15:29

Цитата(Resager @ 24.09.2007 13:01) *

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

Было smile.gif На диске "паскаль & delphi". Самого морозит от учебников распылённых по сети и в других трудночитаемых формах. Лови, что под рукой оказалось smile.gif



Прикрепленные файлы
Прикрепленный файл  VIRTUALK.A.rar ( 1.49 мегабайт ) Кол-во скачиваний: 227
Прикрепленный файл  7.rar ( 206.78 килобайт ) Кол-во скачиваний: 227
Прикрепленный файл  F.rar ( 481.42 килобайт ) Кол-во скачиваний: 227

Автор: Resager 25.09.2007 22:12

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

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

Автор: TarasBer 25.09.2007 22:26

Цитата(Resager @ 25.09.2007 19:12) *

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

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


С изначально равно нулю. Потому что вы его никак не определяли. А по умолчанию он ноль. И вы берёте ПарамСтр(С). И он даёт нулевой параметр - само имя программы вместе с путём. Если хотите знать эн-тый параметр, то перед вызовом ПарамСтр(С) впишите С := эн.

Автор: Resager 25.09.2007 22:41

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

Автор: TarasBer 26.09.2007 0:48

Цитата(Resager @ 25.09.2007 19:41) *

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

Какие модули? И где они должны отображаться? Чёт не понял вопроса.

Автор: Resager 26.09.2007 19:02

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

Автор: TarasBer 26.09.2007 23:08

Цитата(Resager @ 26.09.2007 16:02) *

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

Ну пишешь в начале текста uses CRT, Graph; (graphicS - это из дельфы)
А в чём проблема-то?

Автор: Resager 29.09.2007 21:06

TarasBer, проблема в том, что компилятор выдаёт ошибку типа не найден файл, или это чё за фигня (примерно так)

Автор: volvo 29.09.2007 21:09

Путь к файлу Graph.TPU в меню "Options -> Directories -> Unit Directories" прописан?

Автор: Resager 1.10.2007 23: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.


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

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 2.10.2007 3:15

Цитата(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 2.10.2007 3:34

Цитата
при выполнении проги с дилэем выдаёт DIVISION BY ZERO
В FAQ... Там есть тема, в которой описано, что делать в таком случае...

Автор: Resager 2.10.2007 19:07

А хде этот фак, я его в поиске не нашёл (в каком разделе?)

Автор: volvo 2.10.2007 19:14

http://forum.pascal.net.ru/index.php?showtopic=4537

Автор: Resager 9.10.2007 21:00

А можно ли средствами Паскаля организовать файл (имя введено с терминала), в указанной директории, ну и вывод подкаталогов, в которых этот файл находится (допустим, если их 2, то только один)
Например, я знаю, что файл 1.wav находится в гдето в папке 555, (но эта папка содержит 5000 тысяч папок, и в одной из них этот файл), я ввожу "С:\555", а мне выдаётся ответ folder456\1.wav

Автор: volvo 9.10.2007 21:03

http://forum.pascal.net.ru/index.php?s=&showtopic=3584&view=findpost&p=32237 -> Поиск файла по директориям... Начни уже пользоваться поиском...

Автор: Resager 16.10.2007 22:06

Бальшое Пасиба, за ответ, у меня ещё один вапрос (в поиске не нашел):
как сделать, так, что бы Паскаль открывал (шоб оькрыть файл) одну и ту же папку, а не ту, в которой он лежит( пробовал изменить в меню ФАЙЛ-чанге дир, не канает, после перезапуска!
З.Ы. Тем более скоро поставлю ДСЛ2, (ща диалап у меня) тогда буду рыскать в форуме, пока не найду....

(если кому нада - нидавно поймал один вирус, так он использовал и батники, вбс(через некоторое время обновлял свои копии), и конфиги, и сам текст программы-вируса содержал в текстовом(для восстановления! Этот вирус прописал на автозапуск каждого винчестера!!! Кому нада, могу в архиве сбросить, дыры заделать, а может кто скажет, антивирус его берёт?)

Автор: volvo 16.10.2007 22:14

Цитата
как сделать, так, что бы Паскаль открывал (шоб оькрыть файл) одну и ту же папку
Открывать Паскаль через Ярлык, и прописать в этом Ярлыке нужную рабочую директорию:



Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Resager 17.10.2007 19:31

ну скриншот не обязательно было, я бы и так понял, про рабочюю директорию, кстати у меня руская версия....
Но всё равно не канает, он не сохранет директории введённые в (otions->directories)!!!!

Автор: volvo 17.10.2007 20:06

Цитата
он не сохранет директории введённые в (otions->directories)

А в Options -> Environment -> Preferences у тебя установлено автосохранение на Environment+Desktop?