Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.12.2010, 00:24   #1
Snapper
Пользователь
 
Регистрация: 30.09.2010
Сообщений: 23
Восклицание Командная строка в паскале

Как сделать так чтобы работало не в подпрограмме Программы паскаль, а через командную строку??? помогите пожалуйста
Код:
uses crt;
label metka;
var s:string; n,i:integer;
begin
metka:  write('Введите параметр: ') ;
  readln(s); n:=length(s);
  for i:=1 to n do begin
  s[i]:=LowCase(s[i]);
   if not (s[i] in ['a'..'z']) and not (s[i] in ['а'..'я']) then begin
             delete(s,i,1);
             if i<n then i:=i-1; 
             n:=length(s);
             end;
 end;
  writeln(s) ;  goto metka;
end.
Знаю только то что надо использовать paramstr, но как его правильно оформить??

Последний раз редактировалось Snapper; 16.12.2010 в 00:26.
Snapper вне форума
Старый 16.12.2010, 09:32   #2
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от Snapper Посмотреть сообщение
Как сделать так чтобы работало не в подпрограмме Программы паскаль, а через командную строку??? помогите пожалуйста
Код:
uses crt;
label metka;
var s:string; n,i:integer;
begin
metka:  write('Введите параметр: ') ;
  readln(s); n:=length(s);
  for i:=1 to n do begin
  s[i]:=LowCase(s[i]);
   if not (s[i] in ['a'..'z']) and not (s[i] in ['а'..'я']) then begin
             delete(s,i,1);
             if i<n then i:=i-1; 
             n:=length(s);
             end;
 end;
  writeln(s) ;  goto metka;
end.
Знаю только то что надо использовать paramstr, но как его правильно оформить??
Код:
  if ParamStr(1) = 'p1' then
    begin
        <твой код>
    end;
0 - возвращает название выполняемого файла, с полным путём к нему
1 - первый параметр
2 - второй и т.д.

ParamCount - количество параметров.
Ставить "\p1" или "-p1" - решать тебе . В примере просто "p1".
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума
Старый 16.12.2010, 16:26   #3
Snapper
Пользователь
 
Регистрация: 30.09.2010
Сообщений: 23
По умолчанию

Цитата:
Сообщение от xwicked Посмотреть сообщение
Код:
  if ParamStr(1) = 'p1' then
    begin
        <твой код>
    end;
0 - возвращает название выполняемого файла, с полным путём к нему
1 - первый параметр
2 - второй и т.д.

ParamCount - количество параметров.
Ставить "\p1" или "-p1" - решать тебе . В примере просто "p1".

а куда его засовывать надо???
Snapper вне форума
Старый 16.12.2010, 20:59   #4
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от Snapper Посмотреть сообщение
а куда его засовывать надо???
Между основным begin...end.
в любом месте - это простое условие, без подключения других библиотек .
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума
Старый 16.12.2010, 21:25   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

дополню ответ xwicked

это делается примерно так:

Код:
...
begin
  if ParamCount < 1 then begin 
     WriteLn('Ошибка! Надо указать в командной строке требуемый параметр!');
      Halt(1); {прерываем программу}
  end;
  s := ParamStr(1);
  n:=length(s);
  for i:=1 to n do begin ....

p.s. только в цикле это делать бесполезно - новый параметр в командной строке уже не появится! правда, можно задать в командной строке несколько параметров и обработать их в цикле...
Serge_Bliznykov вне форума
Старый 16.12.2010, 22:53   #6
Snapper
Пользователь
 
Регистрация: 30.09.2010
Сообщений: 23
По умолчанию

у вас какой паскаль? у мну pascalABC он вроде как ParamStr вообще определять не хочет...
Snapper вне форума
Старый 16.12.2010, 23:08   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

или я чего-то не понимаю, или одно из двух...

А кто Вам сказал, что в PascalABC вообще есть командная строка?!
Дайте мне EXE файл Вашей задачи, сгенерённый PascalABC!
Есть такой?
не уверен. ибо, если верить тому, что написано в хелпе (PascalABC.chm):
Цитата:
Компилятор Pascal ABC является компилятором переднего плана (front-end). Это означает, что он не генерирует исполняемый код в виде .exe-файла, а создает в результате компиляции дерево программы в памяти, которое затем выполняется с помощью встроенного интерпретатора. В итоге скорость работы программы примерно в 20 раз медленнее скорости работы этой же программы, откомпилированной в среде Borland Pascal, и в 50 раз медленнее этой программы, откомпилированной в среде Borland Delphi.
Serge_Bliznykov вне форума
Старый 17.12.2010, 21:04   #8
Snapper
Пользователь
 
Регистрация: 30.09.2010
Сообщений: 23
По умолчанию

Сделал так: прописывая каждую букву, потому что делал на Borland Pascal...програ работает БЕЗ PARAMSTR...Что не так???
Код:
uses crt;
label metka;
var s:string;
    i,n:integer;
begin
 if ParamCount < 1 then begin
     WriteLn('Error...'); halt(1);
      end;
     s:=paramstr(1);
      n:=length(s);
  for i:=1 to n do
   if s[i] in ['A'..'Z'] then
     begin
      if s[i]='A' then s[i]:='a'; if s[i]='B' then s[i]:='b';
      if s[i]='C' then s[i]:='c'; if s[i]='D' then s[i]:='d';
      if s[i]='E' then s[i]:='e'; if s[i]='F' then s[i]:='f';
      if s[i]='G' then s[i]:='g'; if s[i]='H' then s[i]:='h';
      if s[i]='I' then s[i]:='i'; if s[i]='J' then s[i]:='j';
      if s[i]='K' then s[i]:='k'; if s[i]='L' then s[i]:='l';
      if s[i]='M' then s[i]:='m'; if s[i]='N' then s[i]:='n';
      if s[i]='O' then s[i]:='o'; if s[i]='P' then s[i]:='p';
      if s[i]='Q' then s[i]:='q'; if s[i]='R' then s[i]:='r';
      if s[i]='S' then s[i]:='s'; if s[i]='T' then s[i]:='t';
      if s[i]='U' then s[i]:='u'; if s[i]='V' then s[i]:='v';
      if s[i]='W' then s[i]:='w'; if s[i]='X' then s[i]:='x';
      if s[i]='Y' then s[i]:='y'; if s[i]='Z' then s[i]:='z';
     end
      else if not (s[i] in ['a'..'z']) then begin
                                               delete(s,i,1);
                                            if i<n then   i:=i-1;
                                               n:=length(s);
                                             end;

  writeln(s);
  end.
Snapper вне форума
Старый 17.12.2010, 21:32   #9
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от Snapper Посмотреть сообщение
Сделал так: прописывая каждую букву, потому что делал на Borland Pascal...програ работает БЕЗ PARAMSTR...Что не так???
Код:
uses crt;
label metka;
var s:string;
    i,n:integer;
begin
 if ParamCount < 1 then begin
     WriteLn('Error...'); halt(1);
      end;
     s:=paramstr(1);
      n:=length(s);
  for i:=1 to n do
   if s[i] in ['A'..'Z'] then
     begin
      if s[i]='A' then s[i]:='a'; if s[i]='B' then s[i]:='b';
      if s[i]='C' then s[i]:='c'; if s[i]='D' then s[i]:='d';
      if s[i]='E' then s[i]:='e'; if s[i]='F' then s[i]:='f';
      if s[i]='G' then s[i]:='g'; if s[i]='H' then s[i]:='h';
      if s[i]='I' then s[i]:='i'; if s[i]='J' then s[i]:='j';
      if s[i]='K' then s[i]:='k'; if s[i]='L' then s[i]:='l';
      if s[i]='M' then s[i]:='m'; if s[i]='N' then s[i]:='n';
      if s[i]='O' then s[i]:='o'; if s[i]='P' then s[i]:='p';
      if s[i]='Q' then s[i]:='q'; if s[i]='R' then s[i]:='r';
      if s[i]='S' then s[i]:='s'; if s[i]='T' then s[i]:='t';
      if s[i]='U' then s[i]:='u'; if s[i]='V' then s[i]:='v';
      if s[i]='W' then s[i]:='w'; if s[i]='X' then s[i]:='x';
      if s[i]='Y' then s[i]:='y'; if s[i]='Z' then s[i]:='z';
     end
      else if not (s[i] in ['a'..'z']) then begin
                                               delete(s,i,1);
                                            if i<n then   i:=i-1;
                                               n:=length(s);
                                             end;

  writeln(s);
  end.
Попробуй просто отдельно набрать:
Код:
writeln(paramstr(1));
и запустить с любым параметром:
Код:
prog1.exe parametr1
на экране отобразится: "parametr1" . Если нет ищи дистряб другой - FreePascal рулит .
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума
Старый 17.12.2010, 21:41   #10
Snapper
Пользователь
 
Регистрация: 30.09.2010
Сообщений: 23
По умолчанию

в нормальном компиляторе оказывается по другому надо описать функцию delete так что попробую исправить там..

Последний раз редактировалось Snapper; 17.12.2010 в 23:21.
Snapper вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
командная строка и mpi skrudjmagdak Общие вопросы C/C++ 0 14.04.2010 17:20
Командная строка Morphling Помощь студентам 9 01.02.2010 00:27
Командная строка Vladya Помощь студентам 4 09.02.2009 18:29
Командная строка Dj_smart Свободное общение 2 23.08.2008 20:12
командная строка Mails Помощь студентам 2 12.05.2008 18:29